如何在 Python 2.7 中安全地验证 HMAC?

2023-12-29

我正在使用 Python 2.7 并使用以下命令创建 HMAChmac图书馆。 Python 3.3 包括compare_digest()函数将比较两个摘要并抵抗定时攻击,但这在 2.7 中不可用。普遍的建议是不要推出自己的加密货币,那么是否有任何成熟的 Python 库可以提供该功能? PyCrypto 似乎没有。


对于从搜索中找到此内容的任何人,如果使用 Django,那么您还可以使用constant_time_compare函数于django.utils.crypto https://github.com/django/django/blob/master/django/utils/crypto.py#L80.

>>> from django.utils.crypto import constant_time_compare
>>> constant_time_compare("foo", "bar")
False
>>> constant_time_compare("foo", "foo")
True

这有同样的警告hmac.compare_digest https://docs.python.org/2/library/hmac.html#hmac.compare_digest(并且实际上使用hmac.compare_digest如果存在):

Note:如果 a 和 b 的长度不同,或者发生错误,理论上,定时攻击可以揭示有关 a 和 b 的类型和长度的信息,但不能揭示它们的值。

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

如何在 Python 2.7 中安全地验证 HMAC? 的相关文章

  • 将 Python 脚本导入另一个脚本?

    我正在阅读 Zed Shaw 的 艰难学习 Python 正在学习第 26 课 在本课中 我们必须修复一些代码 这些代码从另一个脚本调用函数 他说我们不必导入它们来通过测试 但我很好奇我们将如何做到这一点 课程链接 http learnpy
  • dump() 缺少 1 个必需的位置参数:python json 中的“fp”

    我正在尝试美化 json 格式 但收到此错误 import requests as tt from bs4 import BeautifulSoup import json get url tt get https in pinterest
  • 有什么方法可以让一个进程拥有写锁,而其他进程则只能并行读取?

    假设我有一个包含键值的字典 其中值是带锁的对象 每个进程都需要获得锁来修改特定的对象 但字典中的键是稳定的 现在 正如我之前所说 如果要使用新对象添加新密钥 不是很经常 是否有一种方法可以使用锁来排除其他进程在我将密钥添加到字典时访问对象
  • 将旧密码转移到新的哈希算法?

    我正在将站点切换到 Rails 这是一个拥有超过 5 万用户的大型网站 问题是 现有的密码哈希方法是极其虚弱的 我有两个选择 1 切换到新算法 为每个人生成随机密码 然后通过电子邮件将这些密码发送给他们 并要求立即更改 2 实现新算法 但使
  • Django - 没有名为 _sqlite3 的模块

    我在 rhel 5 上安装了 django 1 4 默认情况下 rhel 5 中有 python 2 4 但要使用 django 1 4 我手动安装了 python 2 7 3 开发服务器运行良好 但是当我创建一个新项目并将 setting
  • 在本地安全存储用于 Web 服务的密码

    我有一个应用程序 通过发送用户名和密码来对第三方 Web 服务进行身份验证 目前 我每次启动应用程序时都会在 winform 上输入密码 但我需要它自动登录 我想比更安全地存储用户名 密码 Dim username as String us
  • python中使用argsort进行排序

    我尝试对数组进行排序 import numpy as np arr 5 3 7 2 6 34 46 344 545 32 5 22 print unsorted print arr np argsort arr print sorted p
  • Ruby 的 OpenSSL::Random 种子是否足够?

    我对 Ruby 知之甚少 所以如果答案很明显 请原谅我 我注意到在http www ruby doc org stdlib 1 9 3 libdoc securerandom rdoc SecureRandom html http www
  • python 2.7.5 中的 str() 与 repr() 函数[重复]

    这个问题在这里已经有答案了 有什么区别str and repr python 2 7 5 中的函数 python org 上的说明 The str 函数的目的是返回值的表示 这些值是相当的人类可读的 while repr 是为了生成 表示可
  • spacy 是否将令牌列表作为输入?

    我想使用 spacy 的 POS 标记 NER 和依存解析 而不使用单词标记化 事实上 我的输入是代表一个句子的标记列表 我想尊重用户的标记化 无论是使用 spacy 还是任何其他 NLP 包 这是否可能 现在 我使用这个基于 spacy
  • Iron Python 错误:预期 或 bytearray,得到 用于串行通信

    无法理解这一点 当我使用 python shell 运行时 它可以工作 但不能 当使用 Iron python 调用时 它抛出上面的错误 C scriptEngine ExecuteFile path var testFn scriptSc
  • 使用正则表达式抓取文本正文,排除特定条件

    我正在使用 Python 正则表达式来获取已解析电子邮件的正文 该正文可能不包含任何内容 也可能看起来像这样 一些连贯的句子 拉尔斯克法 ljkd 其他的东西 几行电子邮件签名等等 等等等等等等 我想要电子邮件正文中的所有内容 不包括签名行
  • 是否可以从 .apk 文件获取 Android.mk 或本机源文件?

    看来从 apk文件中获取Java源文件是很容易的 但是否有可能得到Android mk or native通过工具或棘手的方法从 apk 文件中获取源文件 我正在研究 Android 应用程序本机代码安全性 因此这些文件对我来说非常重要 谢
  • PyCharm 调试模式下的键盘中断

    在调试模式下 有什么方法可以在 PyCharm IDE 3 1 中发送键盘中断事件吗 不幸的是 没有简单的方法可以做到这一点 您将需要使用psutil和signal模块 为此 您需要安装psutil最好的方法是通过pip pip insta
  • 使用 urllib 下载 HTTPS 页面,错误:14077438:SSL 例程:SSL23_GET_SERVER_HELLO:tlsv1 警报内部错误

    我正在使用最新的Kubuntu with Python 2 7 6 我尝试下载一个https使用以下代码的页面 import urllib2 hdr User Agent Mozilla 5 0 X11 Linux x86 64 Apple
  • 生产环境的 Flask-Login 与 Flask-Security

    我正在构建一个功能 供用户注册 登录 验证和授权自己 特别是使用 Python Flask 作为后端 我找到了一些解决方案 例如flask login and flask security 据我了解 flask login实际上并没有进行任
  • 如何删除Python字符串的最后一个utf8字符

    我有一个包含 utf 8 编码文本的字符串 我需要删除最后一个 utf 8 字符 到目前为止我做到了 msg msg 1 但这只会删除最后一个字节 只要最后一个字符是 ASCII 代码 它就可以工作 当最后一个字符是多字节字符时 它不再起作
  • 自定义代码访问安全属性

    我创建了以下属性 Serializable AttributeUsage AttributeTargets Class AttributeTargets Method AllowMultiple true Inherited true pu
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • 从列表指向字典变量

    假设你有一个清单 a 3 4 1 我想用这些信息来指向字典 b 3 4 1 现在 我需要的是一个常规 看到该值后 在 b 的位置内读写一个值 我不喜欢复制变量 我想直接改变变量b的内容 假设b是一个嵌套字典 你可以这样做 reduce di

随机推荐