![自从更换操作系统(从 Linux 到 Windows)后,使用 OpenSSL 解码加密文件就不起作用了](https://linux22.com/image/1327686/%E8%87%AA%E4%BB%8E%E6%9B%B4%E6%8D%A2%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%EF%BC%88%E4%BB%8E%20Linux%20%E5%88%B0%20Windows%EF%BC%89%E5%90%8E%EF%BC%8C%E4%BD%BF%E7%94%A8%20OpenSSL%20%E8%A7%A3%E7%A0%81%E5%8A%A0%E5%AF%86%E6%96%87%E4%BB%B6%E5%B0%B1%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%E4%BA%86.png)
我正在编写一个小脚本,用于加密要发送给我们其中一个供应商的文件。
工作流程如下:
- 我们创建了一个密钥,并使用他们提供的公钥进行非对称加密
- 使用加密密钥,我们对需要发送的文件进行对称加密
- 然后我们压缩两个文件(密钥 + 文件)
- 收到后,他们会解压文件
- 他们使用私钥解密密钥
- 然后他们使用解密的密钥解密文件
以下是使用的命令:
在 Linux 上
openssl rand -base64 30 > my.key
chmod 700 my.key
openssl enc -aes-256-cbc -in myfile.zip -out myfile.bin -kfile my.key
openssl rsautl -encrypt -pubin -inkey supplier_key.pem -in my.key -out encrypted.key
在 Windows 上
openssl\bin\openssl.exe rand -base64 30 > my.key
openssl\bin\openssl.exe enc -aes-256-cbc -in myfile.zip -out myfile.bin -kfile my.key
openssl\bin\openssl.exe rsautl -encrypt -pubin -inkey supplier_key.pem -in my.key -out encrypted.key
我们必须这样做,因为文件太大,无法进行非对称加密。
为此,我首先在 cygwin 环境中,它运行完美。但现在,我必须让它在完整的 Windows 环境中运行。我已经修改了脚本,并下载了适用于 Windows 的 openssl 程序。
但是,当我们的供应商收到文件时,步骤 6) 不起作用 :/
他们有这个错误:
> bad decrypt 6566:error:06065064:digital envelope
> routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:325:
我没有对工作方式做任何改变,脚本基本上完全相同,所以我不明白为什么文件解密不起作用(他们可以解密密钥)