前言:
为了数据安全经常会使用到加密技术,今天小编这篇博客讲的是MD5,所写并非很精,写的不对之处可提出,小编定会改正,希望小编写的这篇文章能够帮助小伙伴们有个初步印象。
MD5
实质上是一种哈希算法。主要用于对于密码的加密,在网页上输入密码等,直接操作密码肯定是不安全的,一般是进行MD5加密后再保存以及传输,而且MD5加密是不可逆的,所以即使是能够看到数据库的人员也不能看到原始密码。
其中MD5的概念引用自: https://blog.csdn.net/lspq35k7o5aj21l1h9o/article/details/81073726
通常情况下,在进行登录操作的时候,用户输入正确的密码,后端通过用户输入的密码将其转换成MD5加密值,将其与数据库中的MD5加密值进行对比,如果一致说明输入的密码正确,不一致则为错误。
现在百度搜索MD5加密,其实还是有很多线上加密解密的工具,小编之前看别的博客说是所谓的解密,其实就是要维护一个庞大的数据库,将一些常用的密码加密,一一拼配,将匹配的密码返回。
MD5加密解密方法
package com.test.util;
import java.security.MessageDigest;
/**
* @Author tanghh
* @Date 2020/1/2 10:04
*/
public class MD5Util {
public static void main(String args[]) {
String s = new String("1");
System.out.println("MD5后:" + MD5(s));
System.out.println("解密的:" + decodeMD5(decodeMD5(s)));
}
/**
* 将普通文字通过MD5加密
* @param inStr
* @return
*/
public static String MD5(String inStr) {
MessageDigest md5 = null;
try {
md5 = MessageDigest.getInstance("MD5");
} catch (Exception e) {
System.out.println(e.toString());
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 decodeMD5(String inStr) {
char[] a = inStr.toCharArray();
for (int i = 0; i < a.length; i++) {
a[i] = (char) (a[i] ^ 'a');
}
String s = new String(a);
return s;
}
}
上面的代码拿去即可用,运行下来的结果是
现在我们就可以验证一下拿着MD5加密后的值看看可不可以转成原始密码
可以看到拿着MD5加密后的值也无法将其转成原本的值。
来源:CSDN
作者:soup_tang
链接:https://blog.csdn.net/tangthh123/article/details/103799814