【发布时间】:2015-11-23 13:23:04
【问题描述】:
我正在尝试使用生成 64 长度字符串的 SHA-256 生成哈希密钥,但我需要大小为
【问题讨论】:
-
你不能使用长度为 32 的子字符串吗?
-
SHA-256 产生 32 字节(256 位)的哈希值。我怀疑您不应该将哈希编码为十六进制。
-
@Shivam substring a hash key 这是创建冲突的好方法。
-
更少的密钥空间 = 更多的冲突。假设接近完美的分布应该意味着一半的 sha256 与完整的 sha128(或 128 位的 MD5)发生冲突的频率完全相同(如果有的话)。显然,尝试将更多位塞入编码表示中比删除位更有意义,但子串并没有超出它们明显的作用。相关:stackoverflow.com/questions/18134627/…(sha1 十六进制编码子字符串)
-
@Averroes:是什么让您觉得 64 位散列函数的前 32 位比专门构建的 32 位散列函数差?
标签: java encryption cryptography sha