perlでECBモードのBlowfish暗号の復号化
JAVAで暗号化した文字列をPerlで複合化する方法 - とあるプログラマの備忘録
にあるようにJavaはBlowfishの場合デフォルトでECBモードになるみたい
なのでtomcatなシステムのDBからデータを取り出してみたとき
ちょっとハマったので忘れないうちに書いておく
# CBCモードは意外とコンテンツがあったりする
Crypt::CBC による Blowfish 暗号化 - naoyaのはてなダイアリー
Crypt::ECBとCrypt::Blowfishをインストールして
ドキュメントに従って
#! /usr/bin/perl use strict; use warnings; use Crypt::ECB; my $ciphertext = 'hextext'; my $key = 'key'; my $crypt = Crypt::ECB->new; $crypt->padding(PADDING_AUTO); $crypt->cipher('Blowfish') || die $cipher->errstring; $crypt->key($key); my $plaintext = $cipher->decrypt_hex($ciphertext); print $plaintext;
としたが
Invalid length key
と言われる
調べてみると
Blowfish minimum keysize
にあるようにkeyの長さが8文字より大きくないとダメみたい
そんなこと言われてももうkeyはこの文字列なんだから...
ということで
- if (key_len < 8 || key_len > 56) + if (key_len < 1 || key_len > 56)
にしてmakeしなおし
Blowfish.soを上書きして事なきをえました