【问题标题】:Message Digest java消息摘要 java
【发布时间】:2014-06-17 11:41:36
【问题描述】:

我之前不知道MessageDigest 类。我现在正试图理解一段代码,但文档对我帮助不大。

MessageDigest digest = Crypto.sha256();

digest.update(last.getSign());
byte[] SignHash = digest.digest(publicKey);

根据java文档:

“update”使用给定的byte[]更新此MessageDigest

"digest" 执行最终更新,然后计算并返回此 MessageDigest 的最终哈希值。

问题 1:“使用给定字节 [] 进行更新”的真正含义是什么?

问题 2:“digest”执行的最终更新是什么?

上面的意思是SignHash=sha256(last.getSign() concat(公钥的一些填充)吗?

【问题讨论】:

    标签: java digest message-digest


    【解决方案1】:

    将 MessageDigest 类视为更新它实际上是向内部缓冲区添加更多字节。现在完成后,您可以使用摘要方法创建附加到缓冲区的所有字节的哈希。

    命名可能看起来有点奇怪(我当然认为“appendBytes”和“createHash”/“createDigest”会更好),但想想 MessageDigest 实例,您更新 更多字节,直到您最终生成摘要

    【讨论】:

    • 所以使用 update(last.getSign()),Sign 的字节被附加到一个内部缓冲区,到目前为止一切都很好。问题1清楚。摘要的输入参数是什么意思?例如,在同一个对象上调用 digest() 和 digest(bytes[]) 之间可能有什么区别?
    • 第一个变体完成哈希计算,第二个变体对给定字节进行最后一次更新,然后完成哈希计算(某种捷径)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-25
    相关资源
    最近更新 更多