OpenSSL で 32バイトを enc -aes-128-cbc した結果が48バイトになったという不思議

原因は -nopad オプションをつけていなかったこと.増えた16バイトは付加的なパディング.情報源としたところではちゃんと -nopad をつけていた.

OpenSSL の使い方は http://d.hatena.ne.jp/hnko/20090302/1235977892 を参考にした.

OpenSSL> enc -aes-128-cbc -e -in in.txt -out enc.txt -p -nosalt -iv 8d932015def9f80f6e2373759e353dff -K 6b05e14448c66738fe3ea03c7677edac
key=6B05E14448C66738FE3EA03C7677EDAC
iv =8D932015DEF9F80F6E2373759E353DFF
OpenSSL> enc -aes-128-cbc -d -in enc.txt -out dec.txt -p -nosalt -iv 8d932015def9f80f6e2373759e353dff -K 6b05e14448c66738fe3ea03c7677edac
key=6B05E14448C66738FE3EA03C7677EDAC
iv =8D932015DEF9F80F6E2373759E353DFF

in.txt はバイナリデータ.16進数テキストにしたら,こうなる.

3C 54 7F 8F 27 F1 2E 55 C9 DE 1B 09 5E 35 BD A5 72 E1 71 98 77 92 D2 DF 02 87 BF 29 D7 D6 D9 42

enc.txt はこんなの.

52 40 BF E9 BB 72 66 81 AC E7 B1 FB 30 95 3A FB F6 98 E8 87 8D FB AE B6 53 3A 65 1A 7D 63 D6 9C 1E 38 D6 3D 68 DA CA C7 5E 39 7A 70 58 AE FB 73

使い古した Initial Value を付加しているのかなあ.in.txt と dec.txt はちゃんと一致してるよ.