我有以下python代码:
from hashlib import sha1
secretString=b"this is the secret string"
publicData=b"x10291434"
hash=sha1(publicData+secretString).hexdigest()
现在,如果我发送publicData
和hash
供公众使用。这样安全吗?我想检查一下,当用户提供publicData
后,它与最初与我hash
发送的secretKey
相匹配。
我只是想检查一下我是否正确这样做
答案 0 :(得分:1)
看起来你正试图做HMAC
您应该尝试使用itsdangerous
之类的内容>>> from itsdangerous import Signer
>>> s = Signer('secret-key')
>>> s.sign('my string')
'my string.wh6tMHxLgJqB6oY1uT73iMlyrOA'
>>> s.unsign('my string.wh6tMHxLgJqB6oY1uT73iMlyrOA')
'my string'
答案 1 :(得分:-1)
嗯,SHA-1不被认为是一种安全的哈希算法,所以不,它不安全。
对于资金充足的对手,SHA-1不再被认为是安全的。 2005年,密码分析师发现对SHA-1的攻击表明该算法可能不够安全,无法持续使用[4],自2010年以来,许多组织都建议将其替换为SHA-2或SHA-3。[5] [6] [7]微软,[8]谷歌,[9] Apple [10]和Mozilla [11] [12] [13]都宣布他们各自的浏览器将在2017年之前停止接受SHA-1 SSL证书。
来源:https://en.wikipedia.org/wiki/SHA-1
更多阅读:https://www.schneier.com/blog/archives/2005/02/cryptanalysis_o.html