密码学是不是我的事,所以希望有一些受过良好教育的人在这里比我。
我想在内存缓存中存储用户数据,我想生成一个唯一的用户数据。 我最初的想法是利用用户的用户名,或其他描述性较差的资料片,作为某种散列的基础。
我的标准是,生成过程会
- 快速
- 产生相同的值给出在不同的服务器/环境/ PHP的版本相同的输入
- 和几乎没有任何机会的冲突(因为这将是灾难性的)给予了大量的投入。
我不知道我平时的武器,SHA1 / 2,是否适合这个标准,所以我点头哈腰地在这些问题的更好的诗句。 有备无患。
密码学是不是我的事,所以希望有一些受过良好教育的人在这里比我。
我想在内存缓存中存储用户数据,我想生成一个唯一的用户数据。 我最初的想法是利用用户的用户名,或其他描述性较差的资料片,作为某种散列的基础。
我的标准是,生成过程会
我不知道我平时的武器,SHA1 / 2,是否适合这个标准,所以我点头哈腰地在这些问题的更好的诗句。 有备无患。
如果您的用户名是唯一的,那么为什么你不使用它们直接而不是试图产生某种散列?
SHA2(甚至SHA1 / MD5)倒是 - 如果有会是改造(甚至意外)冲突的任何机会,我们就不会使用它。 但请注意,用户可能希望改变他们的数据,如邮政编码,甚至名字(结婚/离婚......)。
因此,唯一的用户手柄或自动生成的唯一数字ID通常是优选的。
似乎没有要什么毛病SHA1你想要的东西。 如果碰撞是一个问题,根据维基SHA2一直没有任何冲突呢。
您的问题将被散列一个用户名或东西,因为这将被复制而引起的冲突。 你应该使用整个用户的行或散列类似的东西。
也更大/更复杂的哈希的时间越长,一般。