哈希函数产生30个字符的代码?

cfi*_*her 3 encryption algorithm hash string-hashing

我需要将消息散列为30个字符串.这种用法的最佳和最安全的哈希函数是什么?

Jon*_*ler 8

三十个字符(字节)是240位.

如果你不能移动目标帖子以允许32个字符,那么你可能最终会使用SHA-1,它生成160位或20个字节.Base-64编码时,将为28个字符.如果使用十六进制编码,则它将是40个字符,名义上超出范围.使用32个字符时,可以使用SHA-256,但Base-64编码会增加该大小(至44个字符),而十六进制编码会将大小增加到64个字符.

如果必须使用十六进制编码并且可以使用32字节,则可以使用MD5(生成128位),但不建议用于任何新系统.使用Base-64编码,MD5使用24个字符.否则,您使用的是非常安全的算法 - 根本不推荐.

  • 或者,使用base64-SHA-256的前30个字符,这可能比SHA-1更少.您还可以调查http://en.wikipedia.org/wiki/Ascii85,它可以在30个字符中容纳192位熵. (4认同)

qua*_*oup 6

只需使用SHA1并修剪为30个字符.

import hashlib
hash = hashlib.sha1("your message").hexdigest()[:30]
Run Code Online (Sandbox Code Playgroud)

已经证明,从密码安全哈希函数(如SHA1)中删除字符对其安全性的影响可以忽略不计(但现在无法找到引用)

  • 我希望那些对密码学没有任何线索的人会停止对他们几乎不知道判断的答案进行低估.FFS (4认同)
  • @Steve 2 ^ 60是一个巨大的数字。这比以秒为单位的宇宙时代还多。是的,SHA1仍被认为是一种加密安全的哈希函数,因为2 ^ 51步仍然无法实现。同样,找到一种以更少的步骤为整个哈希生成冲突的方法,对于前120位而言,并不会转化为相同的结果。 (2认同)