我是哈希密码学的新手。我正在尝试构建sha256硬件加速器。我正在考虑使用不同的哈希值来优化性能。我正在尝试获取自定义哈希初始值,这个初始值在不久前已经计算过了。这个方法有效吗?我会遇到什么问题。
谢谢
发布于 2018-03-07 04:39:16
我假设你是这样想的:
我正在哈希一系列共享相同前缀$X$ (长度为64个字节的倍数)的值,也就是说,您正在计算:
\begin*} \operatorname{SHA256}(X \mathbin\Vert A) \ \operatorname{SHA256}(X \mathbin\Vert B) \ \vdots \ \operatorname{SHA256}(X \mathbin\Vert B) \结束{SHA256*}
您想知道,“我能不能在X之后立即计算内部SHA256状态,然后在处理字符串$A、B、\dots、Z$时使用它作为”初始SHA256状态“?
答:是的,绝对是。事实上,当需要这类散列时,这是相当常见的做法(这比您预期的要多;例如,在计算HMAC时)。
我会遇到什么问题?
您需要注意的一件事是SHA-256填充物中的length字段,它需要包含整个消息(包括$X$)的长度,而不仅仅是您刚刚处理的消息的长度。
https://crypto.stackexchange.com/questions/56217
复制相似问题