1 简介:
MD5全名Message-Digest Algorithm 5,是一种计算机使用的散列函数,加密是一种不可逆的加密规则,用于确保信息的完整,经过加密算法输出固定长度的字符串
2 作用:
一致性校验
数字签名
安全访问认证,这个就是平时系统设计的问题
3 特点:
不管多长的字符串,加密后长度都是一样的
不管一个文件(数据)多大,只要改变其中的一个字符,都会导致MD5的值发生改变
4 总结:
MD5加密的数据这,一个字符只有唯一一个与之对应的MD5加密数据,但是一个MD5加密数据可以同时对应多个字符串,因此不能使用MD5加密后的数据做为数据库的主键
MD5是不可逆的,即使知道密文,也无法破译出原始数据
5 使用原理:
数据库敏感信息加密,在使用的时候将原始数据进行加密,对比两次加密数据是否相同
6 java实现MD5加密:
package com.example.manystu20220612.mdt;
import java.security.MessageDigest;
public class TestMD5 {
public static String strChangeMD5(String inStr) {
MessageDigest md5 = null;
try {
md5 = MessageDigest.getInstance("MD5");
} catch (Exception e) {
e.printStackTrace();
return "";
}
char[] charArray = inStr.toCharArray();
byte[] byteArray = new byte[charArray.length];
for (int i = 0; i < charArray.length; i++){
byteArray[i] = (byte) charArray[i];
}
byte[] md5Bytes = md5.digest(byteArray);
StringBuffer hexValue = new StringBuffer();
for (int i = 0; i < md5Bytes.length; i++) {
int val = ((int) md5Bytes[i]) & 0xff;
if (val < 16)
hexValue.append("0");
hexValue.append(Integer.toHexString(val));
}
return hexValue.toString();
}
// 可逆的加密算法
public static String en_al(String inStr) {
char[] a = inStr.toCharArray();
for (int i = 0; i < a.length; i++) {
a[i] = (char) (a[i] ^ 't');
}
String s = new String(a);
return s;
}
// 加密后解密
public static String JM(String inStr) {
char[] a = inStr.toCharArray();
for (int i = 0; i < a.length; i++) {
a[i] = (char) (a[i] ^ 't');
}
String k = new String(a);
return k;
}
public static void main(String[] args) {
String s = new String("我不会加密算法啦啦啦啦啦啦啦啦");
System.out.println("原始:" + s);
System.out.println("MD5后:" + strChangeMD5(s));
System.out.println("MD5后再加密:" + en_al(strChangeMD5(s)));
System.out.println("解密为MD5后的:" + JM(en_al(strChangeMD5(s))));
}
}
代码实现偷个懒,java实现谁写都一样,若有改动无非就是加字符串延长值,对比同时加字符串,,,,,
坚持更新更多啦,
搬砖人----------------------------------:
搬砖烫手
不办没钱
啊
啊