我使用以下方法创建了盐; md5(兰特(0,10000000)); (可能有更好的方法吗?)
MYSQL 中似乎无法使文本字段唯一。那么如何检查盐是否已经被以前的用户使用过呢?
或者我应该根据当前日期/时间生成盐?因为 2 个用户不可能同时注册,对吗?
对于盐来说,独特性比长度和可预测性更重要。你假设攻击者有盐。
通用唯一标识符(UUID)将是最好的,并且有一些示例可以在 php 的文档页面上生成通用唯一标识符唯一身份() http://php.net/manual/en/function.uniqid.php功能。 UUID 优于随机字符串,因为它是人类可读的且长度固定,因此您可以将其存储在 varchar 字段中并使用唯一索引来确保不重复。
使用 MD5 对时间进行哈希处理是生成唯一值的常用方法,因为它具有固定长度并且易于人类读取。然而,生成固定长度的随机字符串并自己将其编码为十六进制更有意义。哈希值的设计目的与其说是为了唯一性,不如说是为了不可逆而设计的。使用散列函数可以保证冲突,尽管 SHA1 的冲突比 MD5 少。
盐的长度实际上只是一个因素,因为盐越长,它就越有可能是普遍独特的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)