Python に切り替える必要がある古い PHP コードをいくつか継承しました。プレーン ascii の暗号化キーを指定すると、ファイルから暗号化されたデータを読み取り、復号化されたバージョンを吐き出すことになっています。何らかの理由で、PHP コードは機能しますが、Python コードは機能しません。私は何が欠けていますか?
両方のシステムのブロック サイズは 32 と報告されています。PHP のキー サイズは 24 と報告されています。
PHP
<?php
$key = 'asdf';
$enc = fopen('encrypted.txt', 'r');
$message = fread($enc, 1024*1024);
$td = mcrypt_module_open('rijndael-256', '', 'cfb', '');
$iv = substr($message,0,mcrypt_enc_get_iv_size($td));
$message = substr($message, mcrypt_enc_get_iv_size($td));
mcrypt_generic_init($td, $key, $iv);
$message = mdecrypt_generic($td, $message);
print substr($message, 0, 32);
パイソン
import mcrypt
key = 'asdf'
KEY_SIZE = 24
inp = open('encrypted.txt')
encrypted_data = inp.read()
mc = mcrypt.MCRYPT('rijndael-256', 'cfb')
iv = encrypted_data[0:mc.get_iv_size()]
encrypted_data = encrypted_data[mc.get_iv_size():]
mc.init(key.ljust(KEY_SIZE, '\0'), iv)
output = mc.decrypt(encrypted_data)
print output[0:32]