userx666
Зачем толпой стоит народ?
Чего в безмолвии он ждет?
В чем горе, в чем недоуменье?
Не крепость пала, не сраженье
Проиграно, — пал Скобелев! не стало
Той силы, что была страшней
Врагу десятка крепостей...
Той силы, что богатырей
Нам сказочных напоминала.
userx666
sub lock2key { # wiki.mydc.ru
return undef unless $_[0];
_log_system "Generating our key ...";
my @lock = split // => shift;
my $i;
my @key = ();
# convert to ordinal
$_=ord for @lock;
# calc key[0] with some xor-ing magic
push @key => ($lock[0]^5);
# calc rest of key with some other xor-ing magic
for ($i=1;$i<@lock;$i++) {
push @key => ($lock[$i]^$lock[$i-1]);
}
$_ = ((($_ << 4) & 240) | (($_ >> 4) & 15)) & 0xFF for @key;
unshift @key => shift @key ^ $key[ @key — 1 ];
# escape some
for (@key) {
$_ = ( $_ == 0 || $_ == 5 || $_ == 36 ||
$_ == 96 || $_ == 124 || $_ ==
126 ) ? sprintf('/%%DCN%03i%%/', $_) : chr;
}
# done
return join('' => @key);
}