OpenSSL 3.0执行DES加密命令报unsupported crypto错误如何解决?
OpenSSL 3.0 执行DES-ECB加密报错解决方案
报错根因
OpenSSL 3.0及以上版本默认禁用了DES这类安全性低的老旧加密算法,该类算法已被移入legacy(遗留)提供程序,默认状态下不会被加载,因此直接调用会返回算法不支持错误。
解决方法
方案1:单次执行临时加载legacy提供程序
在原加密命令中添加-provider legacy -provider default参数即可正常执行,修改后的完整命令如下:openssl enc -des-ecb -e -provider legacy -provider default -in secret_message.txt -out simple-cipher-message.bin -K b2a2d62eab19114f
需要同时加载两个提供程序:legacy提供DES-ECB算法支持,default提供其他默认基础功能,二者缺一不可。
方案2:修改配置文件永久生效
如果需要经常使用旧加密算法,可以修改OpenSSL配置文件默认加载legacy提供程序:
- 打开OpenSSL安装目录下的
openssl.cnf配置文件 - 找到
[provider_sect]配置段,默认仅配置了default = default_sect,新增一行配置:legacy = legacy_sect - 在配置文件末尾新增两段配置:
[legacy_sect] activate = 1 [default_sect] activate = 1 - 保存配置文件后重启命令提示符,后续直接运行原加密命令即可正常执行。
注意事项
DES算法和ECB模式均属于安全性极低的加密方案,仅建议用于测试、兼容旧系统场景,生产环境请使用AES等更安全的加密算法替代。
内容的提问来源于stack exchange,提问作者venkysmarty
相关产品推荐
相关产品推荐

