NAME
String::Mask::XS - mask sensitive data faster
VERSION
Version 1.00
SYNOPSIS
Quick summary of what the module does.
mask('thisusedtobeanemail@gmail.com'); # thisusedtobean*****@*****.***
mask('thisusedtobeanemail@gmail.com', 'start', 5); # 'thisu**************@*****.***'
mask('thisusedtobeanemail@gmail.com', 'end'); # '***************mail@gmail.com'
mask('thisusedtobeanemail@gmail.com', 'end', 5); # '*******************@****l.com'
mask('thisusedtobeanemail@gmail.com', 'middle'); # '*******dtobeanemail@g****.***'
mask('thisusedtobeanemail@gmail.com', 'middle', 5); # '************anema**@*****.***'
mask('thisusedtobeanemail@gmail.com', 'email'); # 'thisu**************@*****.***'
mask('thisusedtobeanemail@gmail.com', 'email', 2); # 'thisusedtobeanema**@*****.***'
mask('9991234567'); # '99912*****'
mask('9991234567', 'start', 3); # '999*******'
mask('9991234567', 'end'); # '*****34567'
mask('9991234567', 'end', 3); # '*******567'
mask('9991234567', 'middle'); # '**91234***'
mask('9991234567', 'middle', 4); # '***1234***'
mask('9991234567', 'middle', 4, '_'); # '___1234___'
Description
Data masking or data obfuscation is the process of hiding original data with modified content (characters or other data). The main reason for applying masking to a string is to protect data that is classified as personally identifiable information, sensitive personal data, or commercially sensitive data. However, the data must remain usable for the purposes of undertaking valid test cycles. It must also look real and appear consistent.
EXPORT
mask
This function accepts 4 arguments:
mask($string, $position, $length, $char);
- string
-
The text that you like to mask.
- position
-
The position you would like to be visible. Currently you have four options start, middle, end or email. The default is start.
- length
-
The number of characters that should remain visible. The default is half the length of the passed string.
- mask character
-
The mask character that will replace any masked text. The default is *.
BENCHMARK
use Benchmark qw(:all);
use String::Mask;
use String::Mask::XS;
timethese(10000000, {
'Mask' => sub {
my $string = 'thisusedtobeanemail@gmail.com';
String::Mask::mask($string);
},
'XS' => sub {
my $string = 'thisusedtobeanemail@gmail.com';
String::Mask::XS::mask($string);
}
});
...
Benchmark: timing 10000000 iterations of Mask, XS...
Mask: 17 wallclock secs (16.78 usr + 0.00 sys = 16.78 CPU) @ 595947.56/s (n=10000000)
XS: 0 wallclock secs ( 1.43 usr + 0.00 sys = 1.43 CPU) @ 6993006.99/s (n=10000000)
AUTHOR
LNATION, <email at lnation.org>
BUGS
Please report any bugs or feature requests to bug-string-mask-xs at rt.cpan.org
, or through the web interface at https://rt.cpan.org/NoAuth/ReportBug.html?Queue=String-Mask-XS. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc String::Mask::XS
You can also look for information at:
RT: CPAN's request tracker (report bugs here)
CPAN Ratings
Search CPAN
ACKNOWLEDGEMENTS
LICENSE AND COPYRIGHT
This software is Copyright (c) 2024 by LNATION.
This is free software, licensed under:
The Artistic License 2.0 (GPL Compatible)