0

当我在终端中执行以下操作时,与显示这些密钥映射到唯一密码的消息相比,我得到不同的解密文本

openssl enc -des-ecb -in text.in -out cipher.txt -k '96508092'
openssl enc -d -des-ecb -in cipher.txt -out text.in -k '82514145'

但是当我在编程中使用<openssl/des.h>Crypto.cipher pyDes 实现它时,我得到了相同的解密文本。我找到了为什么我得到相同的文本,这是因为这些 8 字节密钥映射到一个唯一的 7 字节密钥 0x3832343134313401。参考我之前的问题为什么我可以用一个 DES 密钥加密数据并用另一个成功解密?

我的问题是:与可以将这些 8 字节密钥映射到唯一密码的库相比,它在 OpenSSL 终端命令上的实现方式有何不同?

4

1 回答 1

0

-K如果要提供密钥字节,则需要使用大写字母。否则,OpenSSL 假定它是一个密码并从中派生一个(不同的)密钥。

您还需要使用密钥的十六进制版本:

openssl enc -des-ecb -in text.in -out cipher.txt -K '3832353134313435'
openssl enc -d -des-ecb -in cipher.txt -out text.out -K '3933353035303434'
于 2014-04-23T15:11:50.080 回答