java代码实现MD5加密及验证过程详解

作者:我的有趣住在无趣里 时间:2023-09-26 02:50:45 

MD5加密

在我们的程序中,不管是什么,都会有安全问题,今天就说的是MD5加密的方法

MD5是哈希算法,也就是 从明文A到密文B很容易,但是从密文B到明文A几乎不可能

也就是说,给你密文,是几乎无法通过解密来得到明文的。

这个一般用于存储密码。也就是数据库里存的是密文,管理员只能看到密文,而看不到明文。

在pom文件导入相关依赖


 <!--MD5依赖-->
 <dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-lang3</artifactId>
  <version>3.3.2</version>
 </dependency>
 <dependency>
   <groupId>commons-codec</groupId>
   <artifactId>commons-codec</artifactId>
  </dependency>

添加MD5工具类


import org.apache.commons.codec.digest.DigestUtils;

public class Md5 {
public final static String md5key = "Ms2";
/**
 * MD5方法
 * @param text 明文
 * @param key 密钥
 * @return 密文
 * @throws Exception
 */
public static String md5(String text, String key) throws Exception {
 //加密后的字符串
 String encodeStr= DigestUtils.md5Hex(text + key);
 System.out.println("MD5加密后的字符串为:encodeStr="+encodeStr);
 return encodeStr;
}

/**
 * MD5验证方法
 * @param text 明文
 * @param key 密钥
 * @param md5 密文
 * @return true/false
 * @throws Exception
 */
public static boolean verify(String text, String key, String md5) throws Exception {
 //根据传入的密钥进行验证
 String md5Text = md5(text, key);
 if(md5Text.equalsIgnoreCase(md5))
 {
  System.out.println("MD5验证通过");
  return true;
 }
 return false;
}
}

简单说一下里面的md5方法和verify方法

md5方法

  • 方法说明:加密明文

  • 第一个传参的参数是需要加密的文字

  • 第二个传参的参数是需要密钥

  • 这个方法会return出加密后的MD5密文

verify方法

  • 方法说明:将明文转密文,密文与密文进行比较,判断是否一致

  • 第一个参数是明文

  • 第二个参数是密钥

  • 第三个参数是密文

  • return 出判断结果

里面还有一个变量md5key 这个就是我们的密钥

通过这个密钥对明文进行加密

使用我们在使用这个方法时

要获取密钥可以直接调用这个变量

当然这个密钥也可以自己设置

这就是我们的MD5加密方法

来源:https://www.cnblogs.com/liujunwei/p/11657087.html

标签:java,MD5,加密,验证
0
投稿

猜你喜欢

  • 在编码时如何使用\\r与\\n,两者的区别

    2023-04-08 11:19:00
  • Android 完全退出的实例详解

    2022-11-01 22:56:22
  • Java使用openssl检测网站是否支持ocsp

    2022-10-03 15:55:55
  • 详解Java中ThreadLocal类型及简单用法

    2022-03-09 11:51:51
  • Maven profile实现不同环境的配置管理实践

    2021-11-11 09:52:15
  • Lombok为啥这么牛逼?SpringBoot和IDEA官方都要支持它

    2021-10-18 23:04:50
  • MyBatis注解实现动态SQL问题

    2023-08-19 02:34:09
  • 示例解析java重载Overloading与覆盖Overriding

    2021-11-03 17:22:19
  • java实现简单猜数字

    2022-12-31 16:20:02
  • Java类和对象的设计原理

    2023-10-06 07:00:32
  • C#对Word文档的创建、插入表格、设置样式等操作实例

    2021-10-24 23:13:46
  • SpringBoot配置Profile实现多环境支持

    2023-07-29 21:53:20
  • C#实现为视频添加水印

    2022-02-16 05:30:07
  • Android应用中Back键的监听及处理实例

    2022-09-26 02:00:47
  • 深入学习java枚举的应用

    2022-10-27 19:56:34
  • Java如何通过枚举实现有限状态机

    2021-08-05 04:21:05
  • java实现微信H5支付方法详解

    2021-10-15 06:10:30
  • Java MD5消息摘要算法原理及实现代码

    2022-10-22 17:48:03
  • Android中Gallery和ImageSwitcher的使用实例

    2021-05-28 15:52:12
  • 解析android中ProgressBar的用法

    2021-07-13 20:38:52
  • asp之家 软件编程 m.aspxhome.com