我目前在 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: