Написал себе двухбайтную цифроподпись, в принципе неплохо работает, весьма быстро, хоть и безопасность меньше тех же crc, md5, sha и тд
# perl
sub bytes2
{
my $message = $_[0];
return 0b0000_0000_0000_0000 unless $message;
my @message = split(//, $message);
my ($r1, $r2, $r3, $r4);
$r2 = $#message;
$r1 = 0b0000_0001_0000_0000 ^ $r2;
foreach my $char(@message)
{
$r3++;
$r1 += ord($char);
if ($r1 > 0b0111_1111_1111_1111) {
$r1 = $r1 % ($r2 - $r3);
$r4 = $r1 % 4;
$r1 >>= $r4 if ($r4 < 4);
}
}
if ($r1 < 0b0000_1000_0000_0000) {
$r1 <<= 3;
}
if ($r1 < 0b0000_0100_0000_0000) {
$r1 <<= 2;
}
$r1;
}
'hello world' => 11056
'Hello world' => 10800
'hello world ' => 11320
Спустя 76 сек.
' hello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello worldhello world' => 15136