有没有办法在python中为hashlib使用非openssl md5?

有没有办法在python中为hashlib使用非openssl md5?,python,hash,md5,hashlib,Python,Hash,Md5,Hashlib,我生成md5内容哈希以进行上传验证,但最近我注意到,对于在启用FIPS的机器上运行的任何用户,这都将失败。FIPS禁用openssl md5,当我尝试初始化hashlib时,会导致ValueError。通常我会使用SHA,但我依赖于需要content-md5头的外部服务 我的问题是:有没有办法强迫Python使用非openssl哈希函数?有人谈到要添加一个用于安全的标志,但它似乎没有任何进展。关于“如何从FIPS模式机器发送content-md5标头”的答案是否当启用FIPS模式时,您不使用非F

我生成md5内容哈希以进行上传验证,但最近我注意到,对于在启用FIPS的机器上运行的任何用户,这都将失败。FIPS禁用openssl md5,当我尝试初始化hashlib时,会导致
ValueError
。通常我会使用SHA,但我依赖于需要content-md5头的外部服务

我的问题是:有没有办法强迫Python使用非openssl哈希函数?有人谈到要添加一个用于安全的
标志,但它似乎没有任何进展。

关于“如何从FIPS模式机器发送content-md5标头”的答案是否当启用FIPS模式时,您不使用非FIPS验证算法,因为这样做可能违反联邦法规或组织政策,因为启用FIPS的唯一重要原因是是否有监管(或预防性政策)要求

中也有一些讨论,建议content-md5必须是可选的

根据该法规要求,您不能使用MD5,因为它不是符合FIPS的算法,因此不能使用FIPS验证(!)实现

您需要执行以下操作之一:

  • 使该服务不需要content-md5标头

  • 使用不同的服务

  • 使用不需要处于FIPS模式的其他原始机器


如果您的管理层需要参考,请参阅,直接从nist.gov获取。

标志usedforsecurity=False仅适用于部分发行版,因为它不是上游发行版的一部分。您可以在Red Hat Enterprise Linux及其衍生产品(CentOs、Scientific Linux、Oracle Unbreakable Linux等)中找到

您可以自由地仅对非加密内容使用md5(以及其他加密危险的哈希),例如,将其用于缓存结果

md5=hashlib.new('md5',用于安全性=False)
md5.更新(数据到散列)
hex=md5.hexdigest()

我在某个地方读到,当来源是FIPS机器时,md5是允许的,但它不应该用于验证来自其他来源的哈希。不过,我找不到可靠的消息来源,所以我只能假设这是废话。谢谢你的确认!很乐意帮忙。我在附件a中添加了一个链接,以防您的管理层需要合规部的支持。@JordonPhillips您是对的。可以将md5sum用于非加密任务,例如缓存。