【发布时间】:2021-11-19 08:00:37
【问题描述】:
我正在用 Python 编写一个用于椭圆曲线密码学的程序(用于学校和出于兴趣)。我目前正在研究数字签名算法。我目前正在寻找一种良好且安全的散列函数,它要么是 Python 中的标准函数,要么可以轻松下载和导入。我想到了 SHA256,因为这是我所知道的唯一一个尚未被破坏的(据我所知)。但是,我也读过 SHA 不应该用于加密。 SHA256 是否适合数字签名算法?还是应该使用不同的散列函数?如果是这样,哪一个会是一个不错的选择?
【问题讨论】:
-
如果我需要在项目中进行消息签名,我会使用pythonhosted.org/itsdangerous,他们显然使用 HMAC 和 SHA1
-
SHA1 不是已经过时了吗?我认为它被证明是非常脆弱的?无论如何,我希望自己尽可能多地编程。这意味着我想为 ECDSA 编写几乎所有东西,除了散列函数,因为我对那个主题还不够了解。
-
@Anentropic 这是一个 MAC,不是签名。 MAC 是对称的。
-
@Dasherman HMAC-SHA-1 作为 MAC 仍然是安全的。在数字签名算法中使用 SHA-1 很弱。使用 SHA-2(SHA-256、SHA-512 等)进行签名。
标签: python python-3.x hash cryptography digital-signature