Advanced-Config
view release on metacpan or search on metacpan
lib/Advanced/Config/Reader.pm view on Meta::CPAN
}
DBUG_RETURN ( $res ); # Sometimes encrypted and other times not!
}
# ==============================================================
sub _bitwise_exclusive_or
{
DBUG_ENTER_FUNC (); # Dropped @_ on purpose, always sensitive
my $mask = shift;
my $unicode = shift;
DBUG_MASK (0);
my @m = unpack ("C*", $mask);
my @u = unpack ("U*", $unicode);
my @ans;
foreach ( 0..$#u ) {
$ans[$_] = $m[$_] ^ $u[$_]; # Exclusive or of 2 integers still supported.
}
DBUG_RETURN ( pack ("U*", @ans) );
}
# ==============================================================
# USAGE: $key = _make_key ($target, $len);
sub _make_key
{
DBUG_MASK_NEXT_FUNC_CALL (0); # Masks ${target} ...
DBUG_ENTER_FUNC ( @_ );
my $target = shift; # May be ascii or unicode ...
my $len = shift;
DBUG_MASK (0);
my $phrase;
unless ( $target =~ m/[^\x00-\xff]/ ) {
# Normal text ... (ascii)
$phrase = $target . pack ("C*", reverse (unpack ("C*", $target)));
} else {
# Unicode strings (utf8 / Wide Chars)
# Strip off the upper byte from each unicode char ...
my @ans = map { $_ % 0x100 } unpack ("U*", $target);
$phrase = pack ("C*", @ans) . pack ("C*", reverse (@ans));
}
my $key = $phrase;
while ( length ( $key ) < $len ) {
$key .= $phrase;
}
$key = substr ( $key, 0, $len ); # Truncate it to fit ...
( run in 0.293 second using v1.01-cache-2.11-cpan-88abd93f124 )