我正在学习密码散列函数,还有一些关于SHA-2的问题。
沙-256使用8个32位字.沙512使用8个64位的单词.
SHA-512之所以使用64位单词有什么具体原因吗?为什么不是16个32字呢?
如果64位单词比32位词有其优势的话。为什么SHA-256不使用4个64位的单词?
发布于 2016-09-30 12:07:48
使用64位字大小超过32位字大小的主要原因是速度,在顺序操作字的CPU上。增加一倍的字大小可以希望在给定的时间内,在64位的CPU上执行的基本位操作的数量增加一倍,比如使用AMD64 64指令集的一个。
另外,对于一个算法的内部状态(如散列)中的常量字数,状态中的位数是该算法的两倍大,这可以改善密码电阻(如果适用其他条件;特别是,至少是多个比特操作的两倍);并且允许更大的结果。
因此,对于大输入,SHA-512通常比64位CPU上的SHA-256更快,尽管SHA-512使用25%的回合,并且有两次多比特的状态,这可以说更安全。
评论更新:字大小对安全性没有直接影响。作为一个例子,可以将SHA-512重新表示为使用32位的单词,结果是相同的安全性;32位CPU的编译器可以自动完成这一任务。
https://crypto.stackexchange.com/questions/40344
复制相似问题