MD5加密

拟墨画扇 提交于 2020-01-02 14:21:04

前言:

为了数据安全经常会使用到加密技术,今天小编这篇博客讲的是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加密后的值也无法将其转成原本的值。

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!