如何解决Python:AES.MODE_CFB 解码问题/获取初始输入
我正在尝试使用 Python 中的 Crypto.Cipher 库对字节字符串进行编码和解码。加密代码为:
message = b'Hello world How are you Have a great day'
key = pad(b'Hello world',16)
iv = os.urandom(16)
encryptor = AES.new(key,AES.MODE_CFB)
cipher_text = encryptor.encrypt(message)
print(cipher_text)
我得到的输出:
b'x\xc1\x8a&\x07c\x98\xdbl@$\xde\xfeG\x80\x00\xb6\xfd\x17\x9d\xb1R\xdd\xcf1\n\xb5\xe6I\x11\xe0\x96\x08E\x11\xa8^\xbf\x1el'
但是,当我解密回消息时,我希望得到相同的消息
b'Hello world How are you Have a great day'
。但是,我没有。解密代码为:
decryptor = AES.new(key,AES.MODE_CFB,iv=iv)
msg = decryptor.decrypt(cipher_text)
print(msg)
我得到的输出:
b'[\xa0\xfd\xab>T\x90)\xd5\xf3\x8a\xbb\xe0;\xff\xdaare you Have a great day'
我试图应用 decode() 函数,但它似乎不起作用。有人可以给出提示或方向吗?谢谢。
解决方法
显式生成的 IV library(stringr)
str_remove_all(sample_names,str_c(c(pattern1,pattern2,pattern3),collapse="|"))
仅在解密期间使用,而不在加密期间使用。因此,在加密过程中隐式生成了不同的 IV,从而使加密和解密过程中的 IV 不同。修复:
iv
另外,不要使用(填充的)密码作为密钥。为此,有基于密码的密钥派生函数。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。