MD5基本

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实现谁写都一样,若有改动无非就是加字符串延长值,对比同时加字符串,,,,,

坚持更新更多啦,

搬砖人----------------------------------:

搬砖烫手

不办没钱

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值