擅长:python、mysql、java
<p>我相信我已经成功了,综合运用了这里的答案和评论。不需要填充密钥,因为哈希值已经是16的倍数。下面是(希望)成功的代码供参考。(在不幸地测试连接之前,我还要翻译另外两段C代码!)在</p>
<pre><code>Python Conversion
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import hashlib
import base64
username = "example"
password = "example"
mode = AES.MODE_CBC
bytes = username.encode('utf-8')
data_for_padding = password + '0' + str(len(password))
padded = pad(data_for_padding)
key = hashlib.sha256(bytes).digest()
iv = hashlib.md5(bytes).digest()
encryptor = AES.new(key, mode, IV = iv)
clearbytes = padded.encode('utf-8')
ciphertext = encryptor.encrypt(clearbytes)
result = base64.b64encode(ciphertext)
</code></pre>