【发布时间】:2014-05-02 23:49:33
【问题描述】:
PHP 代码:
$key = '111111111111111111111111'; //length: 24
$iv = "\0\0\0\0\0\0\0\0"; //8 bytes
$data = mcrypt_encrypt(MCRYPT_TRIPLEDES, $key, "SECRET", MCRYPT_MODE_CBC, $iv);
base64_encode($data);
// Result: ZGF0YQ==
Python 代码(使用 m2crypto):
cipher = Cipher(alg='des_ede3_ecb', key="111111111111111111111111", op=encrypt, iv='\0'*8)
ciphertext = cipher.update("SECRET")
ciphertext += cipher.final()
base64.b64encode(ciphertext)
# Result: LhBqW6pGRoQ=
Python 代码(使用 pyDes):
k = pyDes.triple_des('111111111111111111111111', mode=pyDes.CBC, IV=b'\0'*8, pad=None, padmode=pyDes.PAD_PKCS5)
d = k.encrypt("SECRET")
base64.b64encode(d)
# Result: LhBqW6pGRoQ=
所以 Python 对不同的库得到相同的结果,但 PHP 没有;/ 有人在这里看到任何错误吗?
谢谢!
【问题讨论】:
-
你在 PHP sn-p 的最后一行有
data没有美元符号。 -
谢谢,但在源代码中是好的 ;-) 我解决了这个问题。