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 支持 的相关文章

  • 如何使用固定的 pandas 数据框进行动态 matplotlib 绘图?

    我有一个名为的数据框benchmark returns and strategy returns 两者具有相同的时间跨度 我想找到一种方法以漂亮的动画风格绘制数据点 以便它显示逐渐加载的所有点 我知道有一个matplotlib animat
  • 如何生成给定范围内的回文数列表?

    假设范围是 1 X 120 这是我尝试过的 gt gt gt def isPalindrome s check if a number is a Palindrome s str s return s s 1 gt gt gt def ge
  • 如何在android上的python kivy中关闭应用程序后使服务继续工作

    我希望我的服务在关闭应用程序后继续工作 但我做不到 我听说我应该使用startForeground 但如何在Python中做到这一点呢 应用程序代码 from kivy app import App from kivy uix floatl
  • 导入错误:没有名为 _ssl 的模块

    带 Python 2 7 的 Ubuntu Maverick 我不知道如何解决以下导入错误 gt gt gt import ssl Traceback most recent call last File
  • 如何在 Sublime Text 2 的 OSX 终端中显示构建结果

    我刚刚从 TextMate 切换到 Sublime Text 2 我非常喜欢它 让我困扰的一件事是默认的构建结果显示在 ST2 的底部 我的程序产生一些很长的结果 显示它的理想方式 如在 TM2 中 是并排查看它们 如何在 Mac 操作系统
  • keras加载模型错误尝试将包含17层的权重文件加载到0层的模型中

    我目前正在使用 keras 开发 vgg16 模型 我用我的一些图层微调 vgg 模型 拟合我的模型 训练 后 我保存我的模型model save name h5 可以毫无问题地保存 但是 当我尝试使用以下命令重新加载模型时load mod
  • 从列表中的数据框列中搜索部分字符串匹配 - Pandas - Python

    我有一个清单 things A1 B2 C3 我有一个 pandas 数据框 其中有一列包含用分号分隔的值 某些行将包含与上面列表中的一项的匹配 它不会是完美的匹配 因为它在其中包含字符串的其他部分 该列 例如 该列中的一行可能有 哇 这里
  • 在 NumPy 中获取 ndarray 的索引和值

    我有一个 ndarrayA任意维数N 我想创建一个数组B元组 数组或列表 其中第一个N每个元组中的元素是索引 最后一个元素是该索引的值A 例如 A array 1 2 3 4 5 6 Then B 0 0 1 0 1 2 0 2 3 1 0
  • Python 中的二进制缓冲区

    在Python中你可以使用StringIO https docs python org library struct html用于字符数据的类似文件的缓冲区 内存映射文件 https docs python org library mmap
  • 当玩家触摸屏幕一侧时,如何让 pygame 发出警告?

    我使用 pygame 创建了一个游戏 当玩家触摸屏幕一侧时 我想让 pygame 给出类似 你不能触摸屏幕两侧 的错误 我尝试在互联网上搜索 但没有找到任何好的结果 我想过在屏幕外添加一个方块 当玩家触摸该方块时 它会发出警告 但这花了很长
  • 使用 OpenPyXL 迭代工作表和单元格,并使用包含的字符串更新单元格[重复]

    这个问题在这里已经有答案了 我想使用 OpenPyXL 来搜索工作簿 但我遇到了一些问题 希望有人可以帮助解决 以下是一些障碍 待办事项 我的工作表和单元格数量未知 我想搜索工作簿并将工作表名称放入数组中 我想循环遍历每个数组项并搜索包含特
  • HTTPS 代理不适用于 Python 的 requests 模块

    我对 Python 还很陌生 我一直在使用他们的 requests 模块作为 PHP 的 cURL 库的替代品 我的代码如下 import requests import json import os import urllib impor
  • 循环中断打破tqdm

    下面的简单代码使用tqdm https github com tqdm tqdm在循环迭代时显示进度条 import tqdm for f in tqdm tqdm range 100000000 if f gt 100000000 4 b
  • Python - 在窗口最小化或隐藏时使用 pywinauto 控制窗口

    我正在尝试做的事情 我正在尝试使用 pywinauto 在 python 中创建一个脚本 以在后台自动安装 notepad 隐藏或最小化 notepad 只是一个示例 因为我将编辑它以与其他软件一起使用 Problem 问题是我想在安装程序
  • Numpy 优化

    我有一个根据条件分配值的函数 我的数据集大小通常在 30 50k 范围内 我不确定这是否是使用 numpy 的正确方法 但是当数字超过 5k 时 它会变得非常慢 有没有更好的方法让它更快 import numpy as np N 5000
  • 如何改变Python中特定打印字母的颜色?

    我正在尝试做一个简短的测验 并且想将错误答案显示为红色 欢迎来到我的测验 您想开始吗 是的 祝你好运 法国的首都是哪里 法国 随机答案不正确的答案 我正在尝试将其显示为红色 我的代码是 print Welcome to my Quiz be
  • 设置 torch.gather(...) 调用的结果

    我有一个形状为 n x m 的 2D pytorch 张量 我想使用索引列表来索引第二个维度 可以使用 torch gather 完成 然后然后还设置新值到索引的结果 Example data torch tensor 0 1 2 3 4
  • 如何使用google colab在jupyter笔记本中显示GIF?

    我正在使用 google colab 想嵌入一个 gif 有谁知道如何做到这一点 我正在使用下面的代码 它并没有在笔记本中为 gif 制作动画 我希望笔记本是交互式的 这样人们就可以看到代码的动画效果 而无需运行它 我发现很多方法在 Goo
  • Python:元类属性有时会覆盖类属性?

    下面代码的结果让我感到困惑 class MyClass type property def a self return 1 class MyObject object metaclass MyClass a 2 print MyObject
  • 改变字典的哈希函数

    按照此question https stackoverflow com questions 37100390 towards understanding dictionaries 我们知道两个不同的字典 dict 1 and dict 2例

随机推荐

  • 用于条件绑定的 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