Openssl 传递二进制密码短语作为参数

Openssl 传递二进制密码短语作为参数

这个openssl命令对我来说工作得很好。

openssl aes-128-ecb -d -in encrypted_base64.txt -K 4D1D75237C31E7732030C69F209F23154418373335E049C4F567C7B6D422ABD0 -base64

我如何使用密码文件执行相同的操作?我正在尝试这样做:

openssl aes-128-ecb -d -in encrypted_base64.txt -pass file:data_key_plaintext.bin -base64

我得到一个bad magic number. 包含工作命令data_key_plaintext.bin的字节。-K例如

> hexdump data_key_plaintext.bin
0000000 4d 1d 75 23 7c 31 e7 73 20 30 c6 9f 20 9f 23 15
0000010 44 18 37 33 35 e0 49 c4 f5 67 c7 b6 d4 22 ab d0
0000020

openssl 文档

file:pathname - 路径名的第一行是密码

这如何应用于二进制密码短语?

答案1

指定的密码-pass与 指定的实际加密密钥不同-K。 openssl 使用哈希函数处理密码,以派生具有特定位长度的实际密钥。因此,密码短语通常是仅使用可打印字符的简短且易于记忆的字符串。

您可以通过查看实际的密钥、IV 和盐-P。请注意,您的密钥会被截断为 128 位密钥长度aes-128-ecb。另请注意-ecb模式较弱,不适合常用。

$ openssl aes-128-ecb -P -K 4D1D75237C31E7732030C69F209F23154418373335E049C4F567C7B6D422ABD0
salt=EA7B538100000000
key=4D1D75237C31E7732030C69F209F2315
$ openssl aes-256-cbc -P -pass pass:secret
salt=332A7608A01A609A
key=1B27C46F481CFA793C665EEFC3C5B6867735CD326840C598AA6EBCCA5829D066
iv =CE223BAEDAA625C02A397D3E1FCE8E75

根据手册 -K不支持文件输入。你可能想做这样的事情:

openssl aes-128-ecb -d -in encrypted_base64.txt -K $(hexdump -v -e '"%02X"' data_key_plaintext.bin) -base64

相关内容