单向加密
这里仅实现了MD5和SHA-512的单向加密,这些单向加密均已被前辈们破解
public class Test {
public static String encrypt (String str,String type) throws NoSuchAlgorithmException {
/* MessageDigest,信息摘要,用来单项加密
类型:MD5,SHA-1,SHA-256,SHA-512
*/
MessageDigest md=MessageDigest.getInstance(type);
/* update方法:负责加密,参数是字节数组
字符串转字节数组:字符串.getBytes(),字符串.getBytes("编码格式")
md.update(str.getBytes(StandardCharsets.UTF_8));
输出Arrays.toString(bs) 结果为:[6, -32, -26, 99, 125, 39, -78, 98, 42, -75, 32, 34, -37, 113, 60, -30]
*/
md.update(str.getBytes());
// 获取加密之后的数据
byte[] bs=md.digest();
String result="";
for (byte b:bs) {
//format("%02X",b);将b转为两位16进制
result+=String.format("%02X",b);
}
return result;
}
public static void main(String[] args) throws NoSuchAlgorithmException {
String str="Hello World!";
String result=encrypt(str,"SHA-512");
//MD5输出结果为:ED076287532E86365E841E92BFC50D8C
//SHA-512输出结果为:861844D6704E8573FEC34D967E20BCFEF3D424CF48BE04E6DC08F2BD58C729743371015EAD891CC3CF1C9D34B49264B510751B1FF9E537937BC46B5D6FF4ECC8
/*
登录时密码验证:
将用户名和密码传给服务端时,将传入的密码做加密,然后和数据库中的密码匹配
*/
System.out.println(result);
}
}