将MCrypt代码从PHP转换为Python:这些代码块不等同于哪里

时间:2013-01-14 01:30:31

标签: php python mcrypt

我继承了一些需要切换到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);

的Python

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]

0 个答案:

没有答案