Erlang 24版本不支持ripemd160哈希算法求助
Erlang 24中crypto:hash(ripemd160)报错notsup的解决办法
问题原因
Erlang的crypto模块依赖系统的OpenSSL库,而OpenSSL 1.1.0及以上版本默认不再编译RIPEMD160这类被标记为弱哈希的算法。Erlang 24通常绑定较新版本的OpenSSL,即便官方文档标注支持该算法,实际运行时也会因为底层OpenSSL不支持而抛出notsup错误。
解决步骤
检查OpenSSL版本
在终端执行命令:openssl version如果输出版本为1.1.0或更高,即可确认是OpenSSL默认禁用导致的问题。
重新编译Erlang并启用RIPEMD160
- 先编译支持RIPEMD160的OpenSSL:
下载OpenSSL源码后,编译时添加启用选项:./config enable-ripemd make && make install - 重新编译Erlang,指定使用上述编译的OpenSSL:
./configure --with-ssl=/path/to/your/openssl/install make && make install
- 先编译支持RIPEMD160的OpenSSL:
替代方案:使用纯Erlang实现的RIPEMD160
若无法重新编译Erlang,可使用第三方纯Erlang实现的RIPEMD160算法。在项目中引入相关依赖后,直接调用对应函数替代crypto:hash/2即可,注意选择维护活跃的库以保证安全性。
内容的提问来源于stack exchange,提问作者Monte Conte
相关产品推荐
相关产品推荐

