Python 3.8 中的 MD4 hashlib 支持

2023-11-25

我正在尝试为使用 NTLM 身份验证的服务器实现肥皂客户端。我使用的库(依赖于 ntlm-auth 的 requests-ntlm2)通过标准库的 hashlib 实现了 NTLM 协议核心的 MD4 算法。

虽然hashlib似乎支持MD4:

>>> 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 库也是如此:

(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错误。这是回溯的相关部分:

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 时,我也会得到相同的结果:

>>> 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

任何有关正在发生的事情的见解和/或任何帮助将不胜感激。


对于 ubuntu(jammy/focal)。

将其添加到您的/etc/ssl/openssl.cnf“重新启用”md4 到 hashlib

[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

根据您的发行版版本,路径openssl.cnf文件可以是/usr/lib/openssl.cnf或其他。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 3.8 中的 MD4 hashlib 支持 的相关文章

  • 如何屏蔽 PyTorch 权重参数中的权重?

    我正在尝试在 PyTorch 中屏蔽 强制为零 特定权重值 我试图掩盖的权重是这样定义的def init class LSTM MASK nn Module def init self options inp dim super LSTM
  • 在 Python 中使用 XPath 和 LXML

    我有一个 python 脚本 用于解析 XML 并将某些感兴趣的元素导出到 csv 文件中 我现在尝试更改脚本以允许根据条件过滤 XML 文件 等效的 XPath 查询将是 DC Events Confirmation contains T
  • 带圆角的 Seaborn 条形图

    我正在尝试绘制一些条形图 但想控制角的圆度 我尝试按照堆栈问题中提供的答案进行操作Matplotlib 中带圆角的条形图 https stackoverflow com questions 58425392 bar chart with r
  • 使用 Django 的 post_save() 信号

    我有两张桌子 class Advertisement models Model created at models DateTimeField auto now add True author email models EmailField
  • 如何更改充当按钮的范围的文本

    我正在为自定义 Web 应用程序编写自动化测试 我遇到了无法更改跨度文本的问题 我尝试过使用 driver execute script 但没有运气 如果我更好地了解 javascript 这确实会有帮助 据我所知 您无法单击跨度 并且列表
  • Python3 查找 2 个列表中有多少个差异才能相等

    假设我们有 2 个列表 always具有相同的长度和always包含字符串 list1 sot sot ts gg gg gg list2 gg gg gg gg gg sot 我们需要找到 其中有多少项list2应该改变 以便它等于lis
  • python ttk treeview:如何选择并设置焦点在一行上?

    我有一个 ttk Treeview 小部件 其中包含一些数据行 如何设置焦点并选择 突出显示 指定项目 tree focus set 什么也没做 tree selection set 0 抱怨 尽管小部件明显填充了超过零个项目 但未找到项目
  • 唯一的图像哈希值即使 EXIF 信息更新也不会改变

    我正在寻找一种方法来为 python 和 php 中的图像创建唯一的哈希值 我考虑过对原始文件使用 md5 和 因为它们可以快速生成 但是当我更新 EXIF 信息 有时时区关闭 时 它会更改总和 并且哈希也会更改 有没有其他方法可以为这些文
  • 如何在 Windows 上使用 Python 3.6 来安装 Python 2.7

    我想问一下如何使用pip install对于 Python 2 7 当我之前安装并使用 Python 3 6 时 我现在必须使用 Windows 上的 Python 版本 pip install 继续安装 Python 3 6 我需要使用以
  • 行为:如何从另一个文件导入步骤?

    我刚刚开始使用behave http pythonhosted org behave 一个Pythonic BDD框架 使用小黄瓜语法 http docs behat org guides 1 gherkin html 行为需要一个特征 例
  • 我可以使用 dask 创建 multivariate_normal 矩阵吗?

    有点相关这个帖子 https stackoverflow com questions 52337612 random multivariate normal on a dask array 我正在尝试复制multivariate norma
  • 在 Mac 上安装 Pygame 到 Enthought 构建中

    关于在 Mac 上安装 Pygame 有许多未解答的问题 但我将在这里提出我的具体问题并希望得到答案 我在 Mac 上安装 Pygame 时遇到了难以置信的困难 我使用 Enthought 版本 EPD 7 3 2 32 位 它是我的默认框
  • 使用 python 将文本发送到带有逗号分隔符的列

    如何使用分隔符 在 Excel 中将一列分成两列 并使用 python 命名标题 这是我的代码 import openpyxl w openpyxl load workbook DDdata xlsx active w active a a
  • 在 pip.conf 中指定多个可信主机

    这是我尝试在我的中设置的 etc pip conf global trusted host pypi org files pythonhosted org 但是 它无法正常工作 参考 https pip pypa io en stable
  • 在 Tkinter 中使用锚点

    我正在尝试对自动点唱机进行编程 但是我还处于早期阶段 并且在使用时遇到了问题anchor 这是我的代码 from tkinter import from tkinter import messagebox as box def main m
  • Plotly:如何避免巨大的 html 文件大小

    我有一个 3D 装箱模型 它使用绘图来绘制输出图 我注意到 绘制了 600 个项目 生成 html 文件需要很长时间 文件大小为 89M 这太疯狂了 我怀疑可能存在一些巨大的重复 或者是由单个项目的 add trace 方法引起的 阴谋 为
  • Scrapy 蜘蛛无法工作

    由于到目前为止没有任何效果 我开始了一个新项目 python scrapy ctl py startproject Nu 我完全按照教程操作 创建了文件夹和一个新的蜘蛛 from scrapy contrib spiders import
  • 如何对字符串列表进行排序?

    在 Python 中创建按字母顺序排序的列表的最佳方法是什么 基本回答 mylist b C A mylist sort 这会修改您的原始列表 即就地排序 要获取列表的排序副本而不更改原始列表 请使用sorted http docs pyt
  • 从时间序列生成日期特征

    我有一个数据框 其中包含如下列 Date temp data holiday day 01 01 2000 10000 0 1 02 01 2000 0 1 2 03 01 2000 2000 0 3 30 01 2000 200 0 30
  • 将此 MATLAB 代码转换为 Python 时我做错了什么?

    我正在努力将生成波形的 MATLAB 代码转换为 Python 就上下文而言 这是原子力显微镜带激发响应的模拟 与代码错误无关 在 MATLAB 中从 r vec 生成的图形与我在 Python 中生成的图形不同 我是否正确地将 MATLA

随机推荐

  • 用于条件绑定的 swift 2 初始值设定项必须具有可选类型,而不是“UIImage”

    更新我的 xcode 以运行 swift 2 后 它给了我这两个我很难解决的错误 Error 1无法为 String AnyObject 类型的值添加下标 索引类型为 String Code let image UIImage editin
  • 这些频段过去是靠肉眼判断的,那么如何以编程方式来判断呢?

    操作员过去常常检查频谱 了解位置和width每个峰值并判断该谱图所属的部分 在新的方式中 图像由相机捕获到屏幕上 并且每个带的宽度必须以编程方式计算 旧系统 分光镜 gt 人眼 新系统 分光镜 gt 相机 gt 程序 有什么好的方法可以计算
  • 按索引列表拆分字符串

    我想按索引列表拆分字符串 其中拆分段以一个索引开始 并在下一个索引之前结束 Example s long string that I want to split up indices 0 5 12 17 parts s index for
  • 二叉树问题。检查相似形状

    嗨 我被困在这样做 不知道该怎么做 如果我有两个二叉树 我如何检查它们是否具有相同的形状 只要树结构相等 节点中的数据并不重要 关于如何解决这个问题有什么想法吗 您可以通过递归轻松地做到这一点 下面的代码之所以有效 是因为当且仅当两个非空树
  • Scala - 新与对象扩展

    使用 new 运算符定义对象与通过扩展类定义独立对象有什么区别 更具体地说 给定类型class GenericType 有什么区别val a new GenericType and object a extends GenericType
  • 从 Linux shell 中的“ftp”命令获取退出状态代码

    我需要从命令行程序检索退出状态代码 不用担心 我用了 但对于 ftp 即使它没有连接 它也会打开 ftp shell 所以我无法理解连接尚未发生 尝试这段代码来理解 bin sh ftp 1234567 OUT if OUT eq 0 th
  • 在 UI 测试我的 SwiftUI 应用程序时如何访问 VStack

    我有一个VStack代码依赖于 onTapGesture方法 像这样的东西 VStack if imageShow Image image1 else Image image2 onTapGesture imageShow toggle 我
  • FCM 与 AWS SNS

    我在用AWS我的 android 项目的资源 我计划为我的项目添加推送通知服务AWS SNS 没有什么问题让我很困扰 我没有发现任何与这些相关的问题 除了一两个但解释不清楚的问题 1 Does AWS支持FCM SNS与 一起工作GCM 但
  • C# 从数据库中的表填充组合框

    我有一个名为的组合框combobox1 我想用它来填充它id作为价值和Name作为显示名称 我搜索并阅读了一些教程 发现此代码可在表单加载事件中使用 但它不会填充列表 我看到一个空的下拉菜单 对我错在哪里有什么想法吗 在我的数据库类中 我有
  • 使用 angular2 在同一路由器出口中加载多个组件

    我的 angular2 应用程序的根组件有以下模板
  • 如何在 JavaScript 中更改鼠标悬停时字母的颜色

    这是我的代码 document ready function var letters p text for var letter of letters letter wrap span class x span x hover color
  • Flyway 找不到类路径:db/migrations

    我现在刚刚在 Intellij 中启动了一个新项目 使用 Spring Boot 版本 2 1 3 和 Flyway 5 2 4 以及 Java 11 尝试启动我的项目后 我得到 Caused by org springframework
  • LibGDX:过滤缩放的TextureRegion

    我有几个具有不同状态的不同纹理的对象 所以我使用TextureAtlas用TexturePacker制作 并调整大小TextureRegion我需要它的地方 我必须调整大小 因为我不仅要尝试支持 720p 和 1080p 而且我的一些对象是
  • pandas:使用不带引号的文字选项卡编写制表符分隔的数据框

    我必须为遗传学软件重新格式化数据 该软件需要将每一列分成两列 例如0 gt G G 1 gt A G 2 gt A A 输出文件应该以制表符分隔 我正在尝试在 pandas 中做到这一点 import csv import pandas a
  • React.js 每第 n 项添加开始标签或结束标签

    我在这个逻辑上遇到了麻烦 因为 React jsx 不允许将非结束标签添加到数组 子组件中 例如 使用 bootstrap css 我想添加一行every4 列 所以逻辑如下 添加一个起始行例如 div 然后在该行内循环 并且每个循环附加一
  • 应使用什么语义 HTML 标记来创建面包屑?

    应该使用什么有意义的 HTML 标签来创建面包屑 我有一个使用未排序列表创建的菜单栏 因为它是一个列表 ul li li li li ul 现在 我决定在菜单下方放置一个面包屑 问题是 我不知道应该使用什么标签 我想尽可能使用有意义的标签
  • 使用Python从另一个应用程序中提取ListView项目

    我有一个带有 ListView SysListView32 控件的应用程序 我想从中提取数据 该控件有 4 列 仅文本数据 我一直在玩以下几行 在网上某处找到 VALUE LENGTH 256 bufferlength int struct
  • 如何获取网页的字数? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我需要获取网页上的总字数 我知道关于System Net WebClient班级 但它是DownloadString 方法返回整个 HTML 标记
  • AudioContext.decodeAudioData(...) 不适用于 iPhone,但适用于其他地方

    我有以下非常基本的代码 它是更复杂问题的一部分 我的问题是这个函数 context decodeAudioData arrayBuffer 不工作iPhone 试穿Safari and Chrome nor Mac Safari 但它可以在
  • Python 3.8 中的 MD4 hashlib 支持

    我正在尝试为使用 NTLM 身份验证的服务器实现肥皂客户端 我使用的库 依赖于 ntlm auth 的 requests ntlm2 通过标准库的 hashlib 实现了 NTLM 协议核心的 MD4 算法 虽然hashlib似乎支持MD4