【发布时间】:2020-05-14 15:43:41
【问题描述】:
我想在我的 MacOS 的命令行中使用 32 个字符的密钥和盐来解密文本。我已经使用程序在 Windows 中对其进行了加密。但是,每当我尝试从命令行解密它时,我都无法得到一个错误。
echo -n PuYNZO+SLqFo6g97gxKr2uAPRUph/sZgaJ3T5YIBPIc= | openssl enc -d -a -aes-256-cbc -K TheTestKeyUsedIs32CharactersLong -S 53616c7455736564 -iv 0 -p
hex string is too short, padding with zero bytes to length
hex string is too short, padding with zero bytes to length
non-hex digit
invalid hex key value
当我尝试加密时
100836
在 MacOS 中,它给了我完全不同的字符串。
U2FsdGVkX19TYWx0VXNlZA4AWDWo5nzi8p5pYyAeUMg=
使用以下命令:
openssl enc -aes-256-cbc -a -S 53616c7455736564 -iter 5 -k TheTestKeyUsedIs32CharactersLong -in input.txt -out openssl_output.txt
来自我在 Windows 中使用的应用程序
100836 正在转换为 PuYNZO+SLqFo6g97gxKr2uAPRUph/sZgaJ3T5YIBPIc=
- 我的 salt 文本是 SaltUsed
- 我的 32 位字符密钥是 TheTestKeyUsedIs32CharactersLong
- 输入是 PuYNZO+SLqFo6g97gxKr2uAPRUph/sZgaJ3T5YIBPIc=
- 应该在100836中解密
但是,结果完全出乎意料。
我也尝试了一个 java 程序来解密它,但是我得到了其他字符串,所以我想先用命令行更正它,然后再跳到代码中。
我也尝试了十六进制数字的密钥,但响应仍然不正确并且不符合预期。
【问题讨论】:
-
请注意您提供的盐是 8 字节十六进制编码值。我相信密钥也需要进行十六进制编码
-
我也试过了,加密的文本是 U2FsdGVkX19TYWx0VXNlZFhz3AhDtVqRkFhh/MKT6Pg=
-
嘿,你在加密时使用的是“0”IV吗?
-
是的,因为我没有定义任何索引向量
标签: encryption openssl cryptography aes lets-encrypt