![]() |
1
geelaw 4 天前 ![]() 简单的答案:没有人研究过这个问题,所以“不知道”。
复杂的答案:可以考虑各种建模的情况,此时不使用 SHA-256 和 SHA-512 的具体结构,为了明确这一点,说两个函数是 h 和 H ,且 h 的输出长度是 H 的的一半。 如果用 AI-ROM 建模 h 和 H ,若盐足够长且两个情况里的盐长度相同,那么两个 h 和一个 H 的安全性相当。 如果用 ROM 建模,则可以去掉盐的随机性和长度的要求,两个 h 和一个 H 的安全性也是一样的。 如果在标准模型下考虑多项式安全性,那么已经有(精神上类似但是不同的)结果 suggest:多项式安全性无法量化增强(所谓 cannot amplify beyond negligible )。见 ePrint 2012/032 。因此如下情况是可能的,h 安全,但是用两个不同的盐,安全性没有任何提升。如果假设上述情况并且假设一个 H 比一个 h 安全,则说明如下情况是可能的,两个 h 不如一个 H 安全。同时,完全有可能一个 h 不如一个 H 强。 |
2
lloovve 4 天前 via iPhone
看你怎么拼接,两个 265 只是计算两次 265 然后拼接,跟直接计算 512 远算量根本不一样
|
3
hefish 4 天前
我觉得 4 个 SHA128 的更安全。。。
|
![]() |
4
ZE3kr 4 天前 via iPhone
SHA 512 安全得多
|
5
yinmin 4 天前 via iPhone ![]() SHA256 加两个不同的盐的安全性 < SHA256 加 1 个盐,更远低于 SHA512 加 1 个盐
在安全界有一个准则:不要试图去自建算法,其安全性绝大多数情况都是远低于已经过考验的标准算法 |
6
joh 4 天前 via Android ![]() 加密算法不是两个 256 加起来可以顶一个 512 的。类比应该是 n 和 n²
|
7
lovelylain 4 天前 via Android
破解 hash 不是非要解出跟你一样的输入值,而是找出 hash 结果跟你的 hash 相同的输入值,只要时间能接受,暴力破解也是一种解法,举个极端例子,hash32 加 16 次盐与 sha512 相比,安全性能一样吗?
|
8
hanyuwei70 4 天前 ![]() 看到你加盐,猜测你是想存密码。
存密码不要用 SHA2 ,用 argon2id ;库比较老的话用 bcrypt 。 |
![]() |
9
villivateur 4 天前 ![]() 如果 sha256 拼接成 512bit 比 sha512 更安全,那么 sha512 就会直接设计成两个 sha256 拼接,或者 sha512 根本就不会存在。因此肯定是 sha512 更安全。
|
![]() |
10
twinsant 4 天前
@villivateur 正解
|
11
likelylee 4 天前
如果你是考虑合规需求,那么 SHA-256 加盐的任何用法基本都是能满足要求的,除非国密强制 SM3 。如果是海外合规相关,上边有人提到 argon2id 以及 bcrypt ,相比 SHA2 系列算法的“合规”风险更高,因为有些审核机构会指定要求 FIPS 许可算法。
如果你只是单纯考虑安全性本身,无脑 SHA-512 就可以。首先 SHA-512 和 SHA-256 可以简单认为不是一个算法,其次 SHA-512 的算法安全强度是 256bits ,而 SHA-256 只有 128bits 。参考 SP 800-57 即可。 |
![]() |
12
mengzhuo 4 天前
理论上 512 更安全
搞 crypto 库的路过,其实这两都是 SHA2 家族的,算法一样,差别就是最后是否压缩摘要。 p.s. 跟楼上说的一样,如果要存密码,就不要用加盐的方式。 |
13
leonshaw 4 天前 via Android
抛开其它的,从基本的计算安全性来说算的慢更安全
|
![]() |
14
DivineRapierH 4 天前 ![]() 找 Gemini 分析了一下,它提到了一点:
你用两个 SHA256 拼接,那么攻击者只要能碰撞出来两个 Hash 中的任意一个就能破解了。从这个角度看还不如只 SHA256 一次。 如果要保存密码,推荐看一下这篇文章: https://crackstation.net/hashing-security.htm SHA256 的优势在于速度快,但是保存密码需要一个“慢”算法来让暴力破解几乎不可能。 |
15
julyclyde 4 天前
@hanyuwei70 库比较老的话应该升级库
|
16
julyclyde 4 天前
@DivineRapierH 相当于“semi 已知明文攻击”了
|
![]() |
17
tool2dx 4 天前
一般来说 hash 越慢越安全,这能防止被大算力给暴力字典破解。
|
18
seansong 4 天前
SHA2 家族中,目前主流 CPU ,支持 SHA2-256 的 SHA-NI 硬件加速指令,而 SHA2-512 没有 SHA-NI 支持,只能使用 SIMD 来加速计算过程。如果你用的 sha 计算库都是足够优化的话,SHA2-256 速度确实会明显更快。从安全性角度来说,绝大部分场合,SHA2-256 安全性足够了,如果你希望更高安全性,建议可以考虑下 blake3
|
![]() |
19
12101111 4 天前
印象中 TPM PCR 会使用递归 hash 的办法
hash_{n+1} = Digest(hash_n | Hash(input_n)) |