|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Andrey Sapozhnikov 2:5020/400 04 Dec 2002 20:27:47 To : Artem Chuprina Subject : Re: ну эта -------------------------------------------------------------------------------- Artem Chuprina wrote: > Здравствуй, Ivan Frolcov. > > IF>>> >Crypt::Twofish2 > IF>>> >Crypt::IDEA > IF>>> Hет чистоперловой реализации. > AC>> Для числодробилки? Гм... > > IF> Hет, для левого случайного хостинга. > > У них в сишной-то реализации ассемблерными вставками народ развлекается, а ты > pure perl хочешь... Они ж с открытым ключом, они тяжелые по определению. IDEA и Twofish - это симметричные алгоритмы (т.е. с закрытым ключом). Кстати, я тут проделал небольшой сравнительный бенчмарк сайферов. Сайферы которые не умеют работать с Crypt::CBC - выбросил, за исключением GOST_PP - его поправить оказалось проще простого (причем не изменяя сам модуль). Benchmark: running Blowfish, Blowfish_PP, CAST5, CAST5_PP, DES, DES_EDE3, DES_PP, GOST, GOST_PP, IDEA, Rijndael, Rijndael_PP, Serpent, TEA, Twofish, Twofish2 for at least 5 CPU seconds... Blowfish: 5 wallclock secs ( 5.33 usr + 0.00 sys = 5.33 CPU) @ 1201.69/s (n=6405) Blowfish_PP: 6 wallclock secs ( 5.08 usr + 0.00 sys = 5.08 CPU) @ 6.69/s (n=34) CAST5: 6 wallclock secs ( 5.26 usr + 0.00 sys = 5.26 CPU) @ 1459.89/s (n=7679) CAST5_PP: 5 wallclock secs ( 5.08 usr + 0.12 sys = 5.20 CPU) @ 124.23/s (n=646) DES: 6 wallclock secs ( 5.31 usr + 0.00 sys = 5.31 CPU) @ 1391.53/s (n=7389) DES_EDE3: 5 wallclock secs ( 5.30 usr + 0.01 sys = 5.31 CPU) @ 1076.84/s (n=5718) DES_PP: 6 wallclock secs ( 5.10 usr + 0.02 sys = 5.12 CPU) @ 549.80/s (n=2815) GOST: 5 wallclock secs ( 5.15 usr + 0.01 sys = 5.16 CPU) @ 1365.31/s (n=7045) GOST_PP: 7 wallclock secs ( 4.57 usr + 0.70 sys = 5.27 CPU) @ 135.10/s (n=712) IDEA: 5 wallclock secs ( 5.23 usr + 0.01 sys = 5.24 CPU) @ 1383.97/s (n=7252) Rijndael: 6 wallclock secs ( 5.34 usr + 0.00 sys = 5.34 CPU) @ 1362.73/s (n=7277) Rijndael_PP: 5 wallclock secs ( 5.25 usr + 0.06 sys = 5.31 CPU) @ 54.80/s (n=291) Serpent: 5 wallclock secs ( 5.26 usr + 0.02 sys = 5.28 CPU) @ 1235.42/s (n=6523) TEA: 6 wallclock secs ( 5.25 usr + 0.00 sys = 5.25 CPU) @ 1332.00/s (n=6993) Twofish: 5 wallclock secs ( 5.29 usr + 0.00 sys = 5.29 CPU) @ 1258.22/s (n=6656) Twofish2: 6 wallclock secs ( 5.30 usr + 0.00 sys = 5.30 CPU) @ 1303.21/s (n=6907) Вот код замерялки: --------------------------------------------------------------------- #!/usr/bin/perl -w use strict; use Crypt::CBC; use Benchmark; sub Crypt::GOST_PP::keysize { 32 } sub Crypt::GOST_PP::blocksize { 8 } my @ciphers = qw( Blowfish Blowfish_PP GOST GOST_PP CAST5 CAST5_PP DES_EDE3 DES DES_PP Rijndael Rijndael_PP Serpent Twofish Twofish2 IDEA TEA ); my %dotest; foreach (@ciphers) { my $cipher = "Crypt::$_"; $dotest{$_} = sub { my $c = Crypt::CBC->new( { 'key' => '12341234', 'cipher' => "$cipher" } ); $c->decrypt($c->encrypt('test line')) eq 'test line' or die "cipher error"; }; } timethese -5, \%dotest; ------------------------------ EOF --------------------------- Самым быстрым из pure-perl оказался DES_PP. Из сайферов с большим размером ключа наиболее быстрые GOST_PP и CAST5_PP. Blowfish_PP - в пролете, скорость черепашья. А вот Rijndael_PP вполне себе неплох, хотя вдвое медленнее CAST5_PP. C-шные реализации показали близкую скорость, очевидно решающим фактором тут уже становится Crypt::CBC. Отказ от регенерации ключа в Crypt::CBC не приводит к заметному ускорению - Digest::MD5 чрезвычайно быстр. Hа моей машине (P4 1.7GHz) он показывает 307235.08/s. Андрей --- ifmail v.2.15dev5 * Origin: Demos online service (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/65772c56f846.html, оценка из 5, голосов 10
|