Encryption 使用openssl解密json文件aes-128-ctr

Encryption 使用openssl解密json文件aes-128-ctr,encryption,openssl,Encryption,Openssl,我在尝试使用openssl命令解密json文件时遇到问题 我有所有这些信息: 密码:aes-128-ctr 密码参数: iv:14ba8………c2161 密文:cd1d9e5e1…..8941100 kdf:pbkdf2,kdfparams:{c:10240,dklen:32,prf:hmac-sha256,salt:a9e493…….5d6fb8a76} mac:2080abdb3c86…..C7B93 因此,我尝试使用以下命令解密密文: $ openssl enc -aes-128

我在尝试使用openssl命令解密json文件时遇到问题

我有所有这些信息:

  • 密码:aes-128-ctr
  • 密码参数:
    • iv:14ba8………c2161
    • 密文:cd1d9e5e1…..8941100
    • kdf:pbkdf2,kdfparams:{c:10240,dklen:32,prf:hmac-sha256,salt:a9e493…….5d6fb8a76}
    • mac:2080abdb3c86…..C7B93
因此,我尝试使用以下命令解密密文:

$ openssl enc -aes-128-ctr -d -in text_in.enc -pbkdf2 -salt -iter 10240  -iv "14ba8......c2161" -S "a9e493.......5d6fb8a76" -pass pass:<mypin> 
但当我使用openssl命令时,我得到了“坏幻数”错误

$openssl enc-aes-128-ctr-d-in text_in.enc-pbkdf2-salt-iter 10240-iv“14ba8……c2161”-S“a9e493…….075d6fb8a76”-通过:
坏幻数

这是解密这些数据的正确方法吗?

解密模式下的
openssl enc
工具
-d
不支持在命令行上提供salt。除非您指示
-nosalt
,否则它希望文件以ASCII格式的
salt\uuuu
幻数开头,后跟salt字节。您的密文文件在开始时不包含该信息,因此出现错误

您可以“手动”在前面添加缺少的幻数和salt字节,方法如下:

$ 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>

$cat考虑到您的JSON文件包含的MAC不是CTR模式的副产品,我认为缺少信息。另外,这个问题与编程无关,也不适合堆栈溢出。嗨,Reinier,我尝试过使用这个命令,但它没有按预期解密。我总是返回二进制解密的数据。
$ 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
$ 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>