java.security.MessageDigest
功能:
-
单向文本加密
-
不论输入的文本多长,输出固定长度的hash值
使用过程
- 创建实例
- 调用update()方法开始计算,
- 调用digest()方法获取加密内容
Tips:
- 调用update()方法后,任何时间点都可以调用reset()方法来重置MessgeDigest对象的状态为初始化状态
- 调用digest()方法后,会将MessgeDigest对象的状态重置为初始化状态
代码
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class Sha256Demo {
public static void main(String[] args) {
System.out.println("SHA256(1)="+getSha256Txt("1"));
System.out.println("SHA256(2)="+getSha256Txt("2"));
System.out.println("SHA256(3)="+getSha256Txt("!@#$%^&*()_+1234567890abcdefghijklmnopqrstuvwxyz================================================================================================="));
}
private static String getSha256Txt(String str){
MessageDigest messageDigest;
String encodeTxt="";
try {
messageDigest= MessageDigest.getInstance("SHA-256");
messageDigest.update(str.getBytes(StandardCharsets.UTF_8));
encodeTxt=byteToHex(messageDigest.digest());
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
return encodeTxt;
}
private static String byteToHex(byte[] bytes){
StringBuilder builder = new StringBuilder();
String temp;
for (byte b:bytes){
temp=Integer.toHexString(b&0xFF);
//得到一位的进行补0操作
if(temp.length()==1)
builder.append(0);
builder.append(temp);
}
return builder.toString();
}
}