MySQL和php中的独特文本字段

Jon*_*an. 5 php mysql unique salt

我用盐创造了一种盐; MD5(兰特(0,10000000)); (可能有更好的方法?)

似乎没有可能在MYSQL中使文本字段唯一.那么如何检查盐是否已用于以前的用户?

或者我应该根据当前日期/时间生成盐?因为2个用户不可能在完全相同的时间注册正确吗?

Mar*_*ams 1

对于盐来说,独特性比长度和可预测性更重要。你假设攻击者有盐。

通用唯一标识符 (UUID) 是最好的,并且有一些示例可以在 php uniqueid()函数的文档页面上生成通用唯一标识符。UUID 优于随机字符串,因为它是人类可读的且长度固定,因此您可以将其存储在 varchar 字段中并使用唯一索引来确保不重复。

使用 MD5 对时间进行哈希处理是生成唯一值的常用方法,因为它具有固定长度并且易于人类读取。然而,生成固定长度的随机字符串并自己将其编码为十六进制更有意义。哈希值的设计目的与其说是为了唯一性,不如说是为了不可逆而设计的。使用散列函数可以保证冲突,尽管 SHA1 的冲突比 MD5 少。

盐的长度实际上只是一个因素,因为盐越长,它就越有可能是普遍独特的。