input must be 8 bytes long at /usr/local/lib/perl/5.10.1/Crypt/DES.pm line 57.
Причина: модуль Net::SSH::Perl реализован на чистом Perl и все методы шифрования пользует свои, в том числе и Crypt::DES. А последний плохо дружит в UTF-8, поэтому и отгребает ошибку.
Фикс: добавить 'utf8::downgrade($data);' в проблемный DES.pm прямо перед строкой, на которую ссылается ошибка. Например, в мое случае я заменил
my ($self,$data) = @_;
return Crypt::DES::crypt($data, $data, $self->{'ks'}, 1);
на
my ($self,$data) = @_;
utf8::downgrade($data);
return Crypt::DES::crypt($data, $data, $self->{'ks'}, 1);
Решение нашел на perlmonks.org.
P.S. Та же беда с Cryprt::Blowfish. Фиксится так же.
P.P.S. Можно еще попробовать чиперы другие использовать. Я не пробовал.
Комментариев нет:
Отправить комментарий