【发布时间】:2016-03-05 18:51:12
【问题描述】:
我正在对社交网络的用户登录和帐户创建进行建模,并且必须使用我自己的散列算法创建一个散列函数(不使用 hashlib)。它的重点是获取密码并对其进行哈希处理,使其成为随机的字母和数字字符串。当仅更改密码的一个字母时,散列密码也应发生显着变化。例如,如果“heyguys”转到 7h8362,“hayguys”将转到完全不同的内容,例如“bbb362”。输入字符串的微小变化应该会导致输出字符串的巨大变化。我这样做的原因是因为我将用户数据存储在字典中,并且以明文形式存储密码很危险。
我该怎么做呢?我是初学者并且知道 hashlib,但除此之外,我似乎不知道从哪里开始。
【问题讨论】:
-
如果您是初学者,您不应该这样做。您应该使用标准化的散列算法,例如 SHA-256,并且如果可能的话,使用其他人的实现,而不是您自己的。您还需要使用随机的每用户盐和密码散列,以使彩虹表攻击不可行。
-
您是否尝试过查看标准方法?选项太多了,“python 加密哈希示例”的快速 google 将为您提供所需的大部分信息。
-
由于您是初学者,因此只需使用标准哈希值而不是自行设计的哈希值。设计自己的哈希算法需要相当多的数学技能,应该留给专业人士。
-
@DarkFalcon:见鬼,SHA-256 不会削减它。你想要一个为密码散列设计的算法,比如bcrypt or scrypt。
-
请听从user2357112的建议!只是散列不好有几个原因;例如它会显示 2 个用户是否使用相同的密码。暴力破解太容易了。考虑使用(按顺序):scrypt、bcrypt、PBKDF2。
标签: python algorithm hash hash-function