Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Python3.8中的MD4 hashlib支持

Python3.8中的MD4 hashlib支持
EN

Stack Overflow用户
提问于 2021-11-11 22:01:35
回答 4查看 4.9K关注 0票数 7

我试图为使用NTLM身份验证的服务器实现soap客户端。我使用的库(requests ntlm2,它依赖于ntlm2)通过标准库的hashlib实现了位于NTLM协议核心的MD4算法。

尽管hashlib似乎支持MD4:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> import hashlib
>>> hashlib.algorithms_available
{'md5-sha1', 'md4', 'shake_128', 'md5', 'blake2s', 'sha3_512', 'ripemd160', 'sha512', 'mdc2', 'blake2b', 'sha3_256', 'sha3_224', 'sha512_224', 'sha1', 'sha384', 'sha256', 'sha224', 'whirlpool', 'sha512_256', 'sha3_384', 'shake_256', 'sm3'}
>>>

我的系统中的openssl库也是如此:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(victory) C:\code\python\services>openssl
help:
[...]
Message Digest commands (see the `dgst' command for more details)
blake2b512        blake2s256        md4               md5
mdc2              rmd160            sha1              sha224
sha256            sha3-224          sha3-256          sha3-384
sha3-512          sha384            sha512            sha512-224
sha512-256        shake128          shake256          sm3
[...]

当身份验证试图运行python时,会生成一个ValueError:不支持的哈希类型md4错误。以下是追溯过程的相关部分:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
C:\ProgramData\Miniconda3\envs\victory\lib\site-packages\ntlm_auth\compute_hash.py in _ntowfv1(password)
    165         return nt_hash
    166 
--> 167     digest = hashlib.new('md4', password.encode('utf-16-le')).digest()
    168 
    169     return digest

C:\ProgramData\Miniconda3\envs\victory\lib\hashlib.py in __hash_new(name, data, **kwargs)
    161         # This allows for SHA224/256 and SHA384/512 support even though
    162         # the OpenSSL library prior to 0.9.8 doesn't provide them.
--> 163         return __get_builtin_constructor(name)(data)
    164 
    165 

C:\ProgramData\Miniconda3\envs\victory\lib\hashlib.py in __get_builtin_constructor(name)
    118         return constructor
    119 
--> 120     raise ValueError('unsupported hash type ' + name)
    121 
    122 

ValueError: unsupported hash type md4

即使我只是尝试从hashlib调用MD4,也会得到相同的结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> import hashlib
>>> hashlib.new('md4')
Traceback (most recent call last):
  File "C:\ProgramData\Miniconda3\envs\victory\lib\hashlib.py", line 157, in __hash_new
    return _hashlib.new(name, data)
ValueError: [digital envelope routines] initialization error

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\ProgramData\Miniconda3\envs\victory\lib\hashlib.py", line 163, in __hash_new
    return __get_builtin_constructor(name)(data)
  File "C:\ProgramData\Miniconda3\envs\victory\lib\hashlib.py", line 120, in __get_builtin_constructor
    raise ValueError('unsupported hash type ' + name)
ValueError: unsupported hash type md4

任何关于正在发生的事情和/或任何帮助的洞察力都将受到极大的赞赏。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2022-03-26 05:14:18

我的conda环境里好像有什么东西坏了。我创造了一个新的相同的一个,从那以后,它一直在工作,而不必改变任何其他东西。

票数 2
EN

Stack Overflow用户

发布于 2022-06-29 12:09:09

为了乌本图酱。

将其添加到您的/usr/lib/openssl.cnf中,以“重新启用”md4到hashlib

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[provider_sect]
default = default_sect
legacy = legacy_sect

[default_sect]
activate = 1

[legacy_sect]
activate = 1

这个https://bugs.launchpad.net/ubuntu/+source/python3.10/+bug/1971580/comments/3的解决方案

票数 4
EN

Stack Overflow用户

发布于 2022-09-16 04:43:03

跟着@imbr转到"For ubuntu jammy“

我发现在我的系统中它没有做任何事情来编辑/添加文件/usr/lib/openssl.cnf,两个小时后我发现这是因为我在/etc/ssl/openssl.cnf上有一个文件,它附带了Ubuntu中的openssl包。来源:https://packages.ubuntu.com/jammy/amd64/openssl/filelist

在配置中合并@imbr修复了问题:D

provider_sect默认= default_sect旧式= legacy_sect default_sect activate =1 legacy_sect default_sect=1

备注:,我正在做一个新的帖子,因为我没有足够的堆栈溢出声誉,直接评论@imbr的帖子

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69938570

复制
相关文章
tensorflow pycharm教程_tensorflow支持python3.8吗
最近在学人工智能与大数据管理,环境是python+tensorflow。但配置有些麻烦,记录一下。其实主要分为两个部分,配置tnsorflow和在pycharm中使用tensorflow。
全栈程序员站长
2022/09/25
6060
tensorflow pycharm教程_tensorflow支持python3.8吗
hashlib
大家好,又见面了,我是你们的朋友全栈君。 使用Python中的hashlib来进行hash加密是非学简单的,下面是一段简单代码:
全栈程序员站长
2022/08/10
1570
Python hashlib模块中的sha加密
sha (Secure Hash Algorithm)模块与md5的作用相似,用于对信息进行加密。"Secure Hash Algorithm", 是“安全散列算法”的意思。
Python碎片公众号
2021/02/26
1.5K0
Python hashlib模块中的sha加密
python中内置hash模块hashlib
hash,是一种对数据进行变换的算法,这种算法有以下特点: 1.不定长输入,定长输出。 2.不能被还原。由于算法过程中丢弃了一些数据,但是丢弃的是什么,丢弃了多少,谁也不知道,所以无法被还原,有点类似于有损压缩,丢弃的不可能被找回。 3.相同输入,相同输出。 4.抗碰撞性。即碰撞(不同输入产生相同输出)的几率特别小。 5.抗篡改性。输入稍有改动,输出差别非常大。 因为hash算法的以上五个特点,所以它主要有以下几个用途: 1.数据结构(哈希表)。对于以键值对形式存储的数据,直接使用键地散列值作为存储地址,存储值。查找时就可以精准查找,不用遍历法一一比对那么麻烦。这是利用了hash的1,3,4特点。 2.密码储存。服务端现在都不存储用户名和密码了,直接存储它们的散列值,用户输入用户名和密码后也生成散列值,和数据库中的进行比对。这样即使数据被盗了 ,黑客也获取不了用户的密码。这是利用了hash的2,3,4,5特点。 3.文件签名。对文件签名,生成签名的散列值。在对方收到文件后对秘钥进行hash计算,看得到的散列值是否与签名相同。这是利用了hash的2,3,4,5特点。 4.文件校验。传输前后进行散列值的比较,同则文件没有损坏或篡改,不同则有损坏或篡改。比如有的网站为了禁止用户上传同样的视频,会对已上传的文件存储其散列值,通过比对新视频散列值是否已存在判断是否为重复上传的视频。如果你想上传相同视频,只要改掉一帧即可。这是利用了hash的2,3,4,5特点。
全栈程序员站长
2022/08/15
3900
python hashlib_python之hashlib模块
new(name, data=b‘‘, **kwargs) – returns a new hash object implementing the given hash function; initializing the hash using the given binary data.
全栈程序员站长
2022/11/15
2990
Python hashlib模块中的md5加密
md5 (Message-Digest Algorithm 5)模块用于计算信息密文(信息摘要)。"message digests", 就是“信息摘要”的意思。
Python碎片公众号
2021/02/26
2.2K0
Python hashlib模块中的md5加密
python hashlib_python加密之hashlib[通俗易懂]
1、强大的hashlib,提供了用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法
全栈程序员站长
2022/08/11
4520
hashlib模块[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/130354.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/01
2020
hashlib模块[通俗易懂]
hashlib模块
hashlib模块 算法介绍 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。 什么是摘要算法呢?摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。 摘要算法就是通过摘要函数f()对任意长度的数据data计算出固定长度的摘要digest,目的是为了发现原始数据是否被人篡改过。 摘要算法之所以能指出数据是否被篡改过,就是因为摘要函数是一个单向函数,计算f(data)很容易,但通过digest反推data却非常困难
用户1214487
2018/01/23
8490
python下载hashlib命令_python之hashlib模块[通俗易懂]
#md5加密工具,md5是不可逆的,所以只能比较密文,不能比较明文,python中不仅仅提供md5加密方法,还提供sha1,sha224,sha256,sha384,sha512,MD5加密算法
全栈程序员站长
2022/09/05
3600
hashlib 算法介绍
什么是摘要算法呢?摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。
超蛋lhy
2018/08/31
5480
『Python』hashlib的简单使用
hash是一种算法(不同的hash算法只是复杂度不一样)(3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法),该算法接受传入的内容,经过运算得到一串hash值
全栈程序员站长
2022/06/27
3400
python模块——hashlib
hashlib模块是对许多hash函数的一个公共接口 new(name, string = '')    执行给定的hash函数来返回一个新的hash对象,使用给定的字符串数据初始化hash对象。如:
py3study
2020/01/07
4770
python hashlib_python import hashlib出现问题
ERROR:root:code for hash md5 was not found.
全栈程序员站长
2022/07/01
1K0
python hashlib模块
hashlib模块:用于加密相关的操作,3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法
py3study
2018/08/02
3700
python hashlib模块
hashlib主要提供字符加密功能,将md5和sha模块整合到了一起,支持md5,sha1, sha224, sha256, sha384, sha512等算法
Python疯子
2018/09/06
8620
Python hashlib、hmac模
Python中的用于加密的函数位于hashlib,hmac模块中,都是内置模块,直接导入即可使用
py3study
2020/01/08
9480
Python加密服务(一)
hashlib 哈希库模块提供了许多哈希算法的 API 支持。哈希算法在中文又被称为散列函数 / 算法,此译文中将统称哈希。想使用具体某一个哈希算法,只需要使用对应的构造函数 new() 来创建对应的哈希对象。不论想使用哪一种具体的哈希算法,在创建哈希对象后的操作均为一致。
Python知识大全
2020/02/13
1.1K0
python hashlib模块安装_python hashlib 模块
hashlib模块用于加密相关的操作,代替了md5模块和sha模块,主要提供SHA1,SHA224,SHA256,SHA384,SHA512,MD5算法。
全栈程序员站长
2022/08/12
2.3K0
Python学习-hashlib
Python的hashlib提供了常见的摘要算法,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法。
py3study
2020/01/13
7250

相似问题

安装在FreeBSD上是否支持nodejs的hashlib?

12

我如何知道hashlib.md5是否支持'usedforsecurity‘标志?

369

Windows和Linux中的Hashlib

13

不支持的散列类型ripemd160和hashlib

19

Python - Hashlib解码

126
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文