有没有办法在python中为hashlib使用非openssl md5?
我生成md5内容哈希以进行上传验证,但最近我注意到,对于在启用FIPS的机器上运行的任何用户,这都将失败。FIPS禁用openssl md5,当我尝试初始化hashlib时,会导致有没有办法在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
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用于非加密任务,例如缓存。