【问题标题】:Encrypt in PHP, Decrypt in Python在 PHP 中加密,在 Python 中解密
【发布时间】:2012-05-19 01:10:12
【问题描述】:

PHP 代码:

$key = "12345678abcdefgh12345678abcdefgh";
$iv = "12345678abcdefgh";
$plaindata = "This is a test string.";

$enc = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $plaindata, MCRYPT_MODE_CBC, $iv));

echo($enc);

结果:

QBN0Yue3D9hBrBuD01n5KWG+lv2doMf97cKm/AeusAI=

如何在 Python 中解密?

【问题讨论】:

标签: php python encryption cross-language


【解决方案1】:

尝试这样的事情(尽管我确实安装了 PyCrypto)

from Crypto.Cipher import AES
import base64

AES.key_size=128
iv="your iv"
key="your key"
crypt_object=AES.new(key=key,mode=AES.MODE_CBC,IV=iv)

decoded=base64.b64decode(plain) # your ecrypted and encoded text goes here
decrypted=crypt_object.decrypt(decoded)

这将带来解码后的文本,但会用字节填充,使其大小为 16 的倍数。

您可能应该决定一个适当的填充方案,然后相应地删除它

【讨论】:

【解决方案2】:

阅读the manual,它有很好的文档记录。

data = base64.b64decode('QBN0Yue3D9hBrBuD01n5KWG+lv2doMf97cKm/AeusAI=')

【讨论】:

  • 您的问题是解密 base64 结果。以一种方式加密某些内容后,您无法将其还原。这就是它的重点。
  • base64.decode 接受两个参数,因此您的代码将引发TypeError。我认为您的意思是使用base64.b64decodebase64.decodestring。另外,分号是什么,您的答案不会解密解码的字符串。
  • 在 PHP 中,有一个 mcrypt 的解密函数。我相信除了base64.b64decode 当然,OP 想要的是与此等价的。 php.net/manual/en/function.mcrypt-decrypt.php
  • 我可以在PHP中解密,我只需要在Python中解密最终结果以获取纯数据“这是一个测试字符串。”
猜你喜欢
  • 2020-12-23
  • 2012-05-23
  • 2019-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-27
  • 2013-09-07
  • 2013-02-12
相关资源
最近更新 更多