Message Digest主要方法简要说明

2020-08-25 16:20栏目:编程
TAG: java

MessageDigest 通过其getInstance系列静态函数来进行实例化和初始化。MessageDigest 对象通过使用 update 方法处理数据。不论什么时候都能够调用 reset 方法重置摘要。一旦全部须要更新的数据都已经被更新了,应该调用 digest 方法之中的一个完毕哈希计算并返回结果。
对于给定数量的更新数据,digest 方法仅仅能被调用一次。digest 方法被调用后,MessageDigest  对象被又一次设置成其初始状态。
1、MessageDigest.getInstance(“MD5”) 创建一个消息摘要实例。
2、MessageDigest.update(byte[] bytes) 更新当前摘要。
3、MessageDigest.digest() 对摘要进行hash获取结果字节数组。

MessageDigest 实例
/**
* 对字节数组转换为16进制字符串输出
*
* @author xiaofeifei
* @date 2020/8/19 7:59 下午
* @param bytes
* @return java.lang.String
*/
public static String getByteHexStr(byte[] bytes) {
StringBuilder sb = new StringBuilder();
for (byte by : bytes) {
String temp = Integer.toHexString(by & 0xFF);
if (temp.length() == 1) {
sb.append(0);
}
sb.append(temp);
}
return sb.toString();
}
public static void main(String[] args) throws NoSuchAlgorithmException {
// 盐(salt): feifei
String salt = "feifei";
// 用户凭证:123456
String credentials = "123456";
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
// 首先通过盐来更新原始摘要(空字符串的hash()值)
messageDigest.update(salt.getBytes(StandardCharsets.UTF_8));
// 然后通过凭证(也就是要加密的明文信息)在此更新摘要(此时的摘要已经是加盐后更新的摘要)
messageDigest.update(credentials.getBytes(StandardCharsets.UTF_8));
// 获取更新完成后摘要的hash值(128bit 16byte hex为32)
getByteHexStr(messageDigest.digest());
}

上一篇:b+tree数据结构简述以及B+ Tree的存储结构

本文来自网络,不代表山斋月平台立场,转载请注明出处: https://www.shanzhaiyue.top