我正在尝试使用PyCrypto构建两个函数,它们接受两个参数:消息和密钥,然后加密/解密消息.
我在网上发现了几个链接来帮助我,但每个链接都有缺陷:
在codekoala上的这个使用os.urandom,PyCrypto不鼓励这样做.
而且,我给函数的关键不能保证具有预期的确切长度.我该怎么做才能实现这一目标?
此外,还有几种模式,建议使用哪种模式?我不知道该用什么:/
最后,究竟是什么?我可以为加密和解密提供不同的IV,还是会以不同的结果返回?
这是我到目前为止所做的:
from Crypto import Random
from Crypto.Cipher import AES
import base64
BLOCK_SIZE=32
def encrypt(message, passphrase):
# passphrase MUST be 16, 24 or 32 bytes long, how can I do that ?
IV = Random.new().read(BLOCK_SIZE)
aes = AES.new(passphrase, AES.MODE_CFB, IV)
return base64.b64encode(aes.encrypt(message))
def decrypt(encrypted, passphrase):
IV = Random.new().read(BLOCK_SIZE)
aes = AES.new(passphrase, AES.MODE_CFB, IV)
return aes.decrypt(base64.b64decode(encrypted))
Run Code Online (Sandbox Code Playgroud) 我有一个长十六进制字符串,表示一系列不同类型的值.我希望将此Hex字符串转换为字节数组,以便我可以将每个值移出并将其转换为适当的数据类型.