【发布时间】:2015-06-15 23:53:21
【问题描述】:
我在使用 python 和 openssl 加密时遇到问题。
我写了这个小 Python 脚本:
#!/usr/bin/python
from Crypto.Cipher import AES
obj = AES.new('Thisisakey123456', AES.MODE_ECB)
message = "Sample text....."
ciphertext = obj.encrypt(message)
print ciphertext
当我用这个命令运行脚本时:
$ ./enc.py | base64
结果我得到了E0lNh0wtSg9lxxKClBEITAo=。
如果我在 openssl 中做同样的事情(或者显然不一样;))我会得到另一个结果:
$ echo -n "Sample text....." | openssl aes-128-ecb -k "Thisisakey123456" -nosalt -nopad | base64
yvNTGC+gwUK38uyJXIk/sQ==
我做错了什么??我希望使用相同的 base64 编码字符串。
顺便说一句:我知道 ecb 不好,但我只是随便玩玩,所以没问题... ;)
【问题讨论】:
-
请记住,欧洲央行可能是不安全的(如果您对细节感兴趣)。它唯一安全的if消息小于块大小,并且只有一条消息在密钥下加密。如果您的消息大于块大小,则需要使用 CBC 模式(或其他类似)模式。如果消息重复,则每条消息都需要一个唯一的 IV。
-
谢谢,我知道了。我没有实现一些安全的东西,只是在玩一些东西......无论如何,你不能提及它足够多:)
标签: python encryption openssl aes