我在尝试使用 openssl 命令解密 json 文件时遇到问题。
我有所有这些信息:
所以我尝试使用以下命令解密密文:
$ openssl enc -aes-128-ctr -d -in text_in.enc -pbkdf2 -salt -iter 10240 -iv "14ba8......c2161" -S "a9e493.......5d6fb8a76" -pass pass:<mypin>
在 text_in.enc 文件中有密文:
$ cat text_in.enc
cd1d9e5e1.....8941100
但是当我使用 openssl 命令时,我收到“错误的幻数”错误。
$ openssl enc -aes-128-ctr -d -in text_in.enc -pbkdf2 -salt -iter 10240 -iv "14ba8......c2161" -S "a9e493.......075d6fb8a76" -pass pass:<mypin>
bad magic number
这是解密这些数据的正确方法吗?
解密模式openssl enc
下的-d
工具不支持在命令行提供salt。除非您指定 -nosalt
,否则它希望文件以 ASCII 中的 Salted__
幻数开头,后跟盐字节。您的密文文件一开始不包含该信息,因此出现错误。
您可以通过执行以下操作“手动”在前面添加缺少的幻数和盐字节:
$ cat <(printf Salted__) <(printf a9e493...075d6fb8a76 | xxd -r -p) text_in.enc | openssl enc -aes-128-ctr -d -iter 10240 -iv 14ba8...c2161 -pass pass:<mypin>
xxd -r
用于将您的十六进制字符串 salt 转换为字节。
请注意,使用选项 -pbkdf2
时隐含了选项 -iter
,并且十六进制字符串周围不需要引号。