Philiprehberger.Masker 0.1.8

dotnet add package Philiprehberger.Masker --version 0.1.8
                    
NuGet\Install-Package Philiprehberger.Masker -Version 0.1.8
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Philiprehberger.Masker" Version="0.1.8" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Philiprehberger.Masker" Version="0.1.8" />
                    
Directory.Packages.props
<PackageReference Include="Philiprehberger.Masker" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Philiprehberger.Masker --version 0.1.8
                    
#r "nuget: Philiprehberger.Masker, 0.1.8"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Philiprehberger.Masker@0.1.8
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Philiprehberger.Masker&version=0.1.8
                    
Install as a Cake Addin
#tool nuget:?package=Philiprehberger.Masker&version=0.1.8
                    
Install as a Cake Tool

Philiprehberger.Masker

CI NuGet Last updated

Mask and redact sensitive data in strings and objects for safe logging.

Installation

dotnet add package Philiprehberger.Masker

Usage

Built-In Patterns

using Philiprehberger.Masker;

var input = "Card: 4111-1111-1111-1234";
var masked = Masker.Mask(input, MaskPattern.CreditCard);
// "Card: ************1234"

Mask All Patterns at Once

var log = "User john@example.com called with SSN 123-45-6789";
var safe = Masker.MaskAll(log);
// "User j***@example.com called with SSN ***-**-6789"

Custom Regex Pattern

using System.Text.RegularExpressions;

var pattern = new Regex(@"API_KEY_\w+");
var result = Masker.Mask("Token: API_KEY_abc123xyz", pattern, revealStart: 0, revealEnd: 4);
// "Token: ***********xyz"

Object Masking

public class UserDto
{
    public string Name { get; set; } = "";

    [SensitiveData]
    public string Password { get; set; } = "";

    [SensitiveData(PatternName = "Email")]
    public string Email { get; set; } = "";
}

var user = new UserDto
{
    Name = "Alice",
    Password = "s3cret!pass",
    Email = "alice@example.com"
};

var safe = ObjectMasker.MaskObject(user);
// safe.Name     => "Alice"
// safe.Password => "*******pass"
// safe.Email    => "a****@example.com"

API

Masker

Method Description
Mask(string input, MaskPattern pattern) Mask using a built-in pattern
Mask(string input, Regex pattern, int revealStart, int revealEnd) Mask using a custom regex with reveal options
MaskAll(string input) Apply all built-in patterns to the input

MaskPattern

Property Description
CreditCard 13-19 digit card numbers, reveals last 4
Email Email addresses, masks local part
Phone US phone numbers, reveals last 4 digits
SSN Social Security Numbers, reveals last 4
JWT JSON Web Tokens, fully redacted
BearerToken Bearer auth tokens, fully redacted
ConnectionString Password/secret values in connection strings

ObjectMasker

Method Description
MaskObject<T>(T obj) Create a masked clone of an object

SensitiveDataAttribute

Property Description
PatternName Optional pattern name to apply (e.g. "Email", "CreditCard")

MaskerOptions

Property Default Description
MaskChar '*' Character used for masking
RevealLength 4 Number of characters to leave visible
RevealEnd true Reveal at end (true) or start (false)

Development

dotnet build src/Philiprehberger.Masker.csproj --configuration Release

Support

If you find this project useful:

Star the repo

🐛 Report issues

💡 Suggest features

❤️ Sponsor development

🌐 All Open Source Projects

💻 GitHub Profile

🔗 LinkedIn Profile

License

MIT

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net8.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.8 117 4/1/2026
0.1.7 110 3/27/2026
0.1.6 108 3/23/2026
0.1.5 108 3/23/2026
0.1.4 108 3/17/2026
0.1.3 116 3/16/2026
0.1.2 114 3/16/2026
0.1.1 114 3/16/2026