签署字符串的危险是什么?

时间:2015-06-19 12:46:41

标签: python

我希望客户给我一个签名,我可以"取消签名"我找到了一个用Python编写的名为itsdangerous的酷包,它可以完成我需要的所有工作......

>>> from itsdangerous import Signer
>>> s = Signer('secret-key')
>>> s.sign('Things you and me should only know')
'my string.wh6tMHxLgJqB6oY1uT73iMlyrOA'
>>> s.unsign('my string.wh6tMHxLgJqB6oY1uT73iMlyrOA')
'my string'

它工作得很好,但我的客户端没有使用Python,所以他们如何签署字符串,即它实际上做了什么来散列我的客户需要重新创建的刺痛。

1 个答案:

答案 0 :(得分:2)

来自their documentation

  

class itsdangerous.Signer(secret_key, salt=None, sep='.', key_derivation=None, digest_method=None, algorithm=None)

     

此类可以对字节进行签名并取消签名并验证提供的签名。

     

Salt可用于命名哈希值,因此签名字符串仅对给定命名空间有效。将此值保留为默认值或在应用程序的不同部分重新使用salt值,其中一个部分中的相同签名值可能意味着另一部分中存在不同的值,这是一种安全风险。

然后实际哈希(强调我的)

  

default_digest_method()
  用于签名者的摘要方法。 默认为sha1 ,但可以为hashlib模块中的任何其他功能更改。

因此假设您只是哈希,并且之后不加盐,他们可以使用SHA-1哈希重现此结果。