我在PHP中有一个函数对文本进行加密,如下所示:
function encrypt($text)
{
$Key = "MyKey";
return trim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $Key, $text, MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND))));
}
如何在Python中解密这些值?
如果您愿意在PHP端使用MCRYPT_RIJNDAEL_128而不是256,那么这非常简单:
尽管当时@101100的答案很好,但已经不可行了。引用现在是一个断开的链接,代码将只在较旧的Pythons(<;3)上运行。
相反,pprp project似乎很好地填补了空白。在Python 2或Python 3上,只要
pip install pprp
,然后:我有点沮丧,密文出来不同于你看到的101100的答案。然而,我已经使用这个技术成功地解密了在PHP中加密的数据,如OP中所述
要解密这种加密形式,您需要获得Rijndael的版本。可以找到一个here。然后需要模拟PHP Mcrypt模块中使用的键和文本填充。他们添加
'\0'
将文本和键填充到正确的大小。它们使用的是256位块大小,与您提供的密钥一起使用的密钥大小为128(如果您提供更大的密钥,可能会增加)。不幸的是,我链接到的Python实现一次只编码一个块。我已经创建了python函数来模拟python中的加密(用于测试)和解密这可以如下使用:
为了进行比较,下面是PHP输出的相同文本:
相关问题 更多 >
编程相关推荐