我目前在 GO 中实现 SHA-256,我知道按照标准,我们必须使用前 64 个素数的根,但我很好奇减少这个数字会如何影响算法的保护。
现在我已经实现了 24 个素数的变体。如果按照所有标准,暴力破解的计算次数等于2的256次方,除了减少计算次数之外,还会有什么缺点吗?
var k = []uint32{
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
}
让我们逐点分析,从最明显到不明显:
hash function
SHA-256
算法不兼容hash functions
仍然可以通过某种方式以相反的顺序解密。因此减少 NOR 可能会导致它被解密Solution: