python 使用openssl时,遇到ValueError: unsupported hash type sha1异常等问题

背景

最近在新的环境构建自动化测试用例的时候,遇到如下的python问题,当前的python环境为python2.7环境。

Python 2.7 已于 2020 年 1 月 1 日停止官方支持

bash 复制代码
pyenv/versions/2.7.6/lib/python2.7/hashlib.py", line 91, in __get_builtin_constructor
    raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type md5

pyenv/versions/2.7.6/lib/python2.7/hashlib.py", line 91, in __get_builtin_constructor
    raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type sha1

pyenv/versions/2.7.6/lib/python2.7/hashlib.py", line 91, in __get_builtin_constructor
    raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type sha224

pyenv/versions/2.7.6/lib/python2.7/hashlib.py", line 91, in __get_builtin_constructor
    raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type sha256
...

分析

md5 和 sha算法都来自于openssl库,检查系统是不是安装了相关的rpm包,看系统已经安装,但是使用的是 OpenSSL 1.1.1 以及以后的版本。

python2.7在使用openssl 1.1.1版本时存在问题,故不能正常运行。旧版中

Python 的 hashlib 模块会为每个支持的哈希算法(如 md5, sha1, sha256)动态生成一个名为 openssl 的 C 函数绑定,

这些函数是直接调用 OpenSSL 底层的 SHA256_Init/Update/Final 等 API。

OpenSSL 1.1.0+ 引入了"EVP"统一接口,废弃了旧的直接算法函数,导致这些函数不能直接使用,故报错。

解决方法

安装兼容 OpenSSL 1.0 的兼容包

bash 复制代码
 yum install compat-openssl10
 yum install ncurses-compat-libs
相关推荐
94620164zwb5几秒前
应用设置模块 Cordova 与 OpenHarmony 混合开发实战
python
551只玄猫11 分钟前
KNN算法基础 机器学习基础1 python人工智能
人工智能·python·算法·机器学习·机器学习算法·knn·knn算法
tang777891 小时前
Python爬虫代理,选短效IP还是长效IP?
爬虫·python·tcp/ip
写文章的大米1 小时前
这份数据验证方案,可以让你的 FastAPI 崩溃率直降90%
python
xingzhemengyou12 小时前
Python 有哪些定时器
前端·python
站大爷IP2 小时前
Python自动整理音乐文件:按艺术家和专辑分类歌曲
python
BBB努力学习程序设计2 小时前
Python 高效处理大数据:生成器(Generator)的工作机制与实战技巧
python
hashiqimiya2 小时前
java程序的并发
java·开发语言·python
2301_811958382 小时前
浏览器下载huggingface网络连接超时,使用镜像源教程
python·tokenizer
red润3 小时前
Python环境变量自动配置:实现生产与开发环境无缝切换
后端·python