【发布时间】:2011-05-19 17:36:56
【问题描述】:
我想为设备创建一个唯一的 id,所以我决定创建 SHA1(mac XOR timestamp XOR user_password)。是否存在与此相关的安全问题?做SHA1(mac CONCATENATE timestamp CONCATENATE user_password)会更好吗?
谢谢
【问题讨论】:
我想为设备创建一个唯一的 id,所以我决定创建 SHA1(mac XOR timestamp XOR user_password)。是否存在与此相关的安全问题?做SHA1(mac CONCATENATE timestamp CONCATENATE user_password)会更好吗?
谢谢
【问题讨论】:
使用连接 - 然后您将基于所有可用源数据的哈希值。
如果您使用 XOR,那么您的一部分源数据可能会在传递给散列函数之前“取消”剩余数据的部分(或全部)位。
连接而不是异或不会影响存储散列所需的空间 - 无论源数据大小如何,生成的 SHA1 散列始终为 20 字节。
【讨论】:
SHA1(1^2^3) == SHA1(1^3^2) == SHA1(2^1^3) == SHA1(2^3^1) == SHA1(3^1^2) == SHA1(3^2^1),而SHA1(123) != SHA1(132) != @9876543430@ != @987 @ != SHA1(312) != SHA1(321) 等等等等。