CryptX
view release on metacpan or search on metacpan
lib/Crypt/Misc.pm view on Meta::CPAN
sub slow_eq {
my ($a, $b) = @_;
return unless defined $a && defined $b;
my $diff = length $a ^ length $b;
for(my $i = 0; $i < length $a && $i < length $b; $i++) {
$diff |= ord(substr $a, $i) ^ ord(substr $b, $i);
}
return $diff == 0;
}
sub random_v4uuid() {
# Version 4 - random - UUID: xxxxxxxx-xxxx-4xxx-Yxxx-xxxxxxxxxxxx
# where x is any hexadecimal digit and Y is one of 8, 9, A, B (1000, 1001, 1010, 1011)
# e.g. f47ac10b-58cc-4372-a567-0e02b2c3d479
my $raw = random_bytes(16);
# xxxxxxxxxxxx4xxxYxxxxxxxxxxxxxxx
$raw &= pack("H*", "FFFFFFFFFFFF0FFFFFFFFFFFFFFFFFFF");
$raw |= pack("H*", "00000000000040000000000000000000");
$raw &= pack("H*", "FFFFFFFFFFFFFFFF3FFFFFFFFFFFFFFF"); # 0x3 == 0011b
$raw |= pack("H*", "00000000000000008000000000000000"); # 0x8 == 1000b
my $hex = unpack("H*", $raw);
$hex =~ s/^(.{8})(.{4})(.{4})(.{4})(.{12}).*$/$1-$2-$3-$4-$5/;
return $hex;
}
sub is_v4uuid($) {
my $uuid = shift;
return 0 if !$uuid;
return 1 if $uuid =~ /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
return 0;
}
### private functions
sub _name2mode {
my $cipher_name = uc(shift);
lib/Math/BigInt/LTM.pm view on Meta::CPAN
use strict;
use warnings;
our $VERSION = '0.086';
use CryptX;
use Carp;
sub CLONE_SKIP { 1 } # prevent cloning
sub api_version() { 2 } # compatible with Math::BigInt v1.83+
sub import { }
### the following functions are implemented in XS
# _1ex()
# _acmp()
# _add()
# _alen()
# _alen()
# _and()
( run in 0.477 second using v1.01-cache-2.11-cpan-1f129e94a17 )