我已经下载并编译了openssl-1.1.0个.

我可以使用openssl的相同exe进行加密和解密(与here相同)

me@ubuntu:~/openssl-1.1.0$ LD_LIBRARY_PATH=. ./apps/openssl aes-256-cbc -a -salt -in file.txt -out file.txt.enc
enter aes-256-cbc encryption password: 123
Verifying - enter aes-256-cbc encryption password:
me@ubuntu:~/openssl-1.1.0$ LD_LIBRARY_PATH=. apps/openssl aes-256-cbc -a -d -in file.txt.enc -out file.txt.dec
enter aes-256-cbc decryption password: 123

openssl个用途:libcrypto.so.1.1, libssl.so.1.1

当我试图用安装在我的ubuntu上的openssl解密时,它使用:

我得到一个错误:

me@ubuntu:~/openssl-1.1.0$ openssl aes-256-cbc -a -d -in file.txt.enc -out file.txt.dec2
enter aes-256-cbc decryption password: 123
bad decrypt
140456117421728:error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt:evp_enc.c:539:

是什么原因造成的?

推荐答案

在Openssl 1.1中,默认摘要从MD5更改为SHA256

try 使用-md md5

cgs@ubuntu:~$ echo "it-works!" > file.txt
cgs@ubuntu:~$ LD_LIBRARY_PATH=~/openssl-1.1.0/ openssl-1.1.0/apps/openssl aes-256-cbc -a -salt -in ~/file.txt -out ~/file.txt.enc -md md5
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
cgs@ubuntu:~$ LD_LIBRARY_PATH=~/openssl-1.0.1f/ openssl-1.0.1f/apps/openssl aes-256-cbc -a -in ~/file.txt.enc -d
enter aes-256-cbc decryption password:
it-works!

丑陋的细节:

aes(或其他加密)不会使用输入的密码,但命令会隐式地从中派生密钥.密钥派生使用openssl 1.1 Use SHA256 not MD5 as default digest.中更改的消息摘要

如果你想保持它的简单密码,而不是开始弄乱键控(-K,-iv),只需强制使用-md就可以了

Linux相关问答推荐

如何在不使用LD_LIBRARY_PATH或RPATH的情况下运行链接到共享库的二进制文件?

是否有例外情况需要在.gitconfig中使用?

AWK+向AWK导出值未传递

如何在 shell 脚本中自定义 SFTP 详细输出

为什么在已连接的设备上调用 btmgmt conn-info 返回:状态 0x02(未连接)

如何计算文本的时差,如 YYYYMMDDHHMMSSXXX 格式,包括毫秒

更改 awk 中的上一个重复行

如何拆分多个分隔符但将它们保留在方括号之间?

有什么方法可以知道在发送之前将在 TCP 上发送多少字节?

Linux time 命令输出中 real、user 和 sys 的含义

Linux/Unix 手册页语法约定

Linux 应用程序分析

如何将输出从 grep 传送到 cp?

我如何从 Ubuntu 上的源代码自己构建 python?

如何在 Ubuntu 12.04 中更改 Jenkins 安装的端口号

如何在 Linux 上查找不包含文本的文本文件?

在 PHP / Apache / Linux 环境中,为什么 chmod 777 是危险的?

在 Linux 中的特定行向文件添加文本

Linux:处理成服务

网络共享文件夹上的 GIT 存储库中的并发性