fah*_*hmi 5 java security algorithm sha
我有一个问题,也许是一个愚蠢的问题,我想在使用SHA1算法散列后将数据存储在数据库中.但是,在将来的某个时间,数据库中的大小会增加,因为SHA1中的大小字很大.
我们可以减小SHA1算法的大小,可能是一半大小.对不起我的愚蠢问题,以及我糟糕的英语.谢谢.:d
我正在使用JAVA.
Cod*_*aos 10
每个哈希20个字节(假设二进制存储)真的太多了吗?如果您当前使用十六进制编码切换到二进制,则每个哈希节省20个字节.与hex相比,Base64节省了大约10个字节.
如果您只是截断加密哈希,它仍然是一个很好的加密哈希,但输出大小减少.您需要的输出大小取决于您的应用程序.
针对随机更改的完整性检查可以使用更短的32-64位散列,并且不需要加密散列函数.
如果你需要唯一性,你应该>>2*log_2(entries)在哈希中有位(参见生日悖论).大约120位,它类似于GUID/UUID(GUID有一个基于sha1的生成模式)
>>2*log_2(entries)
如果你想要加密强度,我会避免低于128位.
Aas*_*set 5
不; 根据定义,SHA-1 哈希的大小为 160 位。我强烈怀疑散列的大小是否会成为问题;我想您的数据库中还有其他数据吗?很可能,您会发现数据的其他部分对数据库大小的贡献更大。您希望这些散列有多少行?
然而,存在是存储该散列作为一个字符串(这将需要至少40个字节,这取决于字符串编码),并把它作为二进制数据(这将需要20个字节)之间的尺寸差。
正如其他人所指出的,您可以切换到另一种算法,但从安全角度来看,这可能不是一个好的选择 - 哈希算法的输出长度越短,它就越弱。
Cha*_*ara 5
如果你减少它,它不再是SHA1 :).你必须考虑不同的算法
归档时间:
14 年,7 月 前
查看次数:
2120 次
最近记录: