MD5加密算法、MD5的实现

MD5是一种广泛应用于企业级开发的数据摘要算法,用于加密重要信息。它能将任意二进制数据转化为128位的二进制值,通常以32位十六进制表示。MD5的特点是原文相同,密文一致;原文不同,密文不同,且不可逆向计算回原文。主要应用包括数据库密码加密、文件校验和网盘秒传等。在MySQL和Java中,都有相应的MD5实现方法,如MySQL的MD5()函数和Java中的MD5加密库。
摘要由CSDN通过智能技术生成

MD5加密算法

  1. 数据摘要算法
    在企业级开发过程中,有很多重要信息,是需要加密后存储的。
    目前在行业中,应用最广泛的加密算法是数据摘要算法 也称作数据指纹算法。
    数据摘要算法有很多,目前比较流行的是 MD5 SHA1 SHA512等等。
    课上使用MD5,其他算法其实也差不多。
    数据摘要算法的特点:
    任何二进制,经过MD5算法机密之后,可以得到一个128位的二进制值,通常写成32位十六进制。
    原文相同,算出的MD5密文一定相同,原文不同,算出的MD5密文一定不同(可能重复,但概率非常低)。且,MD5值没有任何规律。
    只能由明文算出密文,密文永远无法算回明文(实际上是可以算的,只是计算量太大,目前的计算机无法在可接受的的时间内完成)。
    数据摘要算法的主要应用场景:
    数据库中密码加密
    下载文件时文件的校验
    网盘的秒传

  2. MD5的实现
    a. mysql数据库中
    MD5()函数可以实现md5算法

在这里插入图片描述

b. java中

package com.easymall.utils;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Utils {
   
/**
 *使用md5的算法进行加密
 */
public static String md5(String plainText) {
   
byte[] secretBytes = null;
try {
   
secretBytes = MessageDigest.getInstance("md5")
.digest(plainText.getBytes());
} catch (NoSuchAlgorithmException e) {
   
throw new RuntimeException("没有md5这个算法!");
}
String md5code = new BigInteger(1, secretBytes).toString(16);
for (int i = 0; i < 32 - md5code.length(); i++) {
   
md5code = "0" + md5code;
}
return md5code;
}
}
  1. 改造EasyMall使用MD5加密
    a. 数据库中user表密码都要变为MD5加密

     update user set password = MD5(password);
    

b. 改造EasyMall注册功能,密码加密后存储

package cn.tedu.web;

import cn.tedu.domain.User;
import cn.tedu.exception.MsgException;
import cn.tedu.service.UserService;
import cn.tedu.utils.MD5Utils;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
/**
 * 注册
 */
@WebServlet(urlPatterns = "/RegistServlet")
public class RegistServlet extends HttpServlet {
   
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   
        //0.解决乱码
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张艳霞zhangyx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值