Как сказал laalto, Blowfish_PP (потому что это Blowfish, а не потому, что это _PP) работает на блоках.
Работа с ним, как правило, сложна, поэтому у вас есть модуль Crypt::CBC, который является оберткой (практически) любого модуля Crypt :: *, который обеспечивает блочный шифр и позволяет использовать его гораздо проще.
Например, код с Crypt :: CBC будет:
#!/usr/bin/perl -w
use strict;
use Crypt::CBC;
my $key = "12345678";
my $plaintextBlock = "mystringhere";
my $cipher = Crypt::CBC->new(
-key => $key,
-cipher => 'Blowfish_PP'
);
my $ciphertext = $cipher->encrypt($plaintextBlock);
# my $textual = $ciphertext;
# $textual =~ s/([^a-zA-Z0-9])/sprintf "\\x%02x", ord $1/ge;
# print "ciphertext: [$textual]\n";
print "ciphertext: [$ciphertext]\n";
my $plaintext = $cipher->decrypt($ciphertext);
print "plaintext: [$plaintext]\n";
Помните, что шифротекста является поток байтов, так что это на самом деле не для печати. Вы можете захотеть разбить 3 строки в коде (начиная с моего $ textual = $ ciphertext), чтобы показать зашифрованный текст более читаемым способом.
Дополнительное преимущество использования Crypt :: CBC заключается в том, что если вы когда-либо захотите переключиться на другой алгоритм - это всего лишь одно изменение в вызове Crypt :: CBC-> new().
Кстати, почему Crypt :: Blowfish_PP? Я имею в виду, почему бы не Crypt :: Blowfish? Версия _PP обычно просто медленнее.
Дополнительное примечание, прямо из Crypt::Blowfish, что мы можем предположить, что функционально эквивалентно Crypt :: Blowfish_PP:
Модуль способен быть использован с Crypt :: CBC. Вам рекомендуется прочитать perldoc для Crypt :: CBC, если вы намерены использовать этот модуль для Cipher .На самом деле, если у вас есть , есть какие-либо намерения шифровать больше , чем восемь байтов данных с этим или любого другого блочного шифрования, вы собираетесь нуждаться в некотором типе цепочки блоков help. Crypt :: CBC имеет тенденцию быть очень хорошо. Если вы не собираетесь использовать , то зашифруйте более восьми байтов, ваши данные должны быть ровно в восемь байтов. Если нужно, сделайте свое собственное заполнение. «\ 0» как нулевой байт отлично подходит для использования .