doFinal函数在java中创建HMac时做什么
我有一个java中的hmac生成方法,定义如下:-doFinal函数在java中创建HMac时做什么,java,hmac,Java,Hmac,我有一个java中的hmac生成方法,定义如下:- String encStr = "POST\n" + timestamp + "\n" + message; Mac sha256_HMAC = Mac.getInstance("HmacSHA1"); SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(), "HmacSHA1"); sha256_HMAC.init(secret_key);
String encStr = "POST\n" + timestamp + "\n" + message;
Mac sha256_HMAC = Mac.getInstance("HmacSHA1");
SecretKeySpec secret_key = new SecretKeySpec(secret.getBytes(), "HmacSHA1");
sha256_HMAC.init(secret_key);
String hash = Base64.getEncoder().encodeToString(sha256_HMAC.doFinal(encStr.getBytes()));
return hash;
其中secret和function name是我的私钥和名称。
我只想知道doFinal函数的作用,因为oracle文档说它正在重置密钥,但它们也有明确的重置方法
sha256_HMAC.init()
while(read more data into buffer) {
sha256_HMAC.upadte(buffer)
}
result = sha256_HMAC.doFinal()
因此,doFinal(buffer)
要做的是:
do `update(buffer)`
calculate the cryptography result
reset the HmacSHA1 instance
return the cryptography result
doFinal
表示这是计算结果的最后(最后)一步,没有更多数据
来自Java文档():
完成MAC操作byte[]doFinal()
处理给定的字节数组并完成MAC操作byte[]doFinal(byte[]input)
sha256_HMAC.init()
while(read more data into buffer) {
sha256_HMAC.upadte(buffer)
}
result = sha256_HMAC.doFinal()
因此,doFinal(buffer)
要做的是:
do `update(buffer)`
calculate the cryptography result
reset the HmacSHA1 instance
return the cryptography result
doFinal
表示这是计算结果的最后(最后)一步,没有更多数据
来自Java文档():
完成MAC操作byte[]doFinal()
处理给定的字节数组并完成MAC操作byte[]doFinal(byte[]input)
Mac
对象一次,因此钥匙是否复位无关紧要。您的问题具体是什么?我的问题是doFinal方法在hmac实例上的用途是什么?您只使用Mac
对象一次,因此键是否重置并不重要。您的问题具体是什么?我的问题是doFinal方法在hmac实例上的用途是什么?