【发布时间】:2019-12-26 12:49:19
【问题描述】:
我在将密钥转换为 16 位时尝试过 md5 和 sha256,但加密后,如果我要通过第三方解密器https://www.browserling.com/tools/aes-decrypt 验证它,结果将不起作用@
我的目标是使用python解密js版本。
为 js 版本添加了另一个链接。 https://jsfiddle.net/korvacs/4obfkxm7/17/
Python 代码:
from Crypto.Cipher import AES
from Crypto import Random
import hashlib
from base64 import b64encode
key = "lazydog".encode("utf-8")
key = hashlib.sha256(key).digest()
iv = Random.new().read(AES.block_size)
cipher = AES.new(key, AES.MODE_CBC, iv)
msg = iv + cipher.encrypt('Attack at dawn')
print(b64encode(msg).decode('utf-8'))
有人可以帮助我吗?我不太擅长加密。
【问题讨论】:
-
哈希算法
md5和sha256的设计方式是它们不能用于返回平面文本。它们无法解密。 -
那么我如何将我的密钥转换为16位或者说aes js版本使用什么哈希?
-
你想达到什么目的?解密“lazydog”文本还是“黎明攻击”? AES 不能只使用密码,您提供的链接没有提供有关如何将密码转换为 AES 密钥的信息
-
"lazydog" 是密钥/密码/密码。我想从结果中解密“黎明攻击”。关于信息,您可以查看此链接。 jsfiddle.net/korvacs/4obfkxm7/17
-
可以用,不过是模拟openssl
EVP_BytesToKey函数,比较复杂,最近改了。如果我同时更改 js 和 python 代码并使它们工作,这对你有好处吗?
标签: python encryption cryptography aes pycrypto