mk1*_*k12 10 encryption openssl hashing aes
OpenSSL 使用什么哈希函数为 AES-256 生成密钥?我无法在他们的文档中的任何地方找到它。
$ touch file
$ openssl aes-256-cbc -nosalt -P -in file
enter aes-256-cbc encryption password: (I type "a" and hit enter)
Verifying - enter aes-256-cbc encryption password: (I type "a" and hit enter)
key=0CC175B9C0F1B6A831C399E269772661CEC520EA51EA0A47E87295FA3245A605
iv =4FA92C5873672E20FB163A0BCB2BB4A4
Run Code Online (Sandbox Code Playgroud)
key=对于输入“a”,哪种散列算法在倒数第二行之后生成未加盐的散列?
Sne*_*cle 12
相当肯定这是一个 SHA1 摘要算法,但老实说,我不能 100% 肯定地说。
谁会想到旨在增加钝性的东西会有钝性说明;)
编辑:这在您的情况下可能没有帮助,但我想您总是可以通过这样做来了解
openssl enc -d -a -md sha1 -aes-256-cbc -nosalt -p
Run Code Online (Sandbox Code Playgroud)
它是两个 MD5 哈希值的串联。
其推导如下:
128bit_Key = MD5(Passphrase + Salt)
256bit_Key = 128bit_Key + MD5(128bit_Key + Passphrase + Salt)
Run Code Online (Sandbox Code Playgroud)
您可以通过执行以下操作来检查:
$ echo Testing > file
$ openssl enc -aes-256-cbc -p -in file -out file.aes -salt
: enter aes-256-cbc encryption password: abc
: Verifying - enter aes-256-cbc encryption password: abc
: salt=3025373CA0530C93
: key=E165475C6D8B9DD0B696EE2A37D7176DFDF4D7B510406648E70BAE8E80493E5E
: iv =B030394C16C76C7A94DC22FDDB6B0744
$ perl -e 'print pack "H*", "3025373CA0530C93"' > salt
$ echo -n abc > passphrase
$ cat passphrase > key.128.tmp
$ cat salt >> key.128.tmp
$ md5sum key.128.tmp
: e165475c6d8b9dd0b696ee2a37d7176d key.128.tmp
$ perl -e 'print pack "H*", "e165475c6d8b9dd0b696ee2a37d7176d"' > key.128
$ cat key.128 > key.256.tmp
$ cat passphrase >> key.256.tmp
$ cat salt >> key.256.tmp
$ md5sum key.256.tmp
: fdf4d7b510406648e70bae8e80493e5e key.256.tmp
Run Code Online (Sandbox Code Playgroud)
请注意“key.128.tmp”和“key.256.tmp”的 MD5 如何连接在一起形成与初始命令的输出相同的密钥。
| 归档时间: |
|
| 查看次数: |
33286 次 |
| 最近记录: |