我正在编写一个小脚本,用于加密要发送给我们其中一个供应商的文件。
工作流程如下:
- 我们创建了一个密钥,并使用他们提供的公钥进行非对称加密
- 使用加密密钥,我们对需要发送的文件进行对称加密
- 然后我们压缩两个文件(密钥 + 文件)
- 收到后,他们会解压文件
- 他们使用私钥解密密钥
- 然后他们使用解密的密钥解密文件
以下是使用的命令:
在 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:
我没有对工作方式做任何改变,脚本基本上完全相同,所以我不明白为什么文件解密不起作用(他们可以解密密钥)