热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

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

这篇文章主要介绍了java代码实现MD5加密及验证过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

MD5加密

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

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

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

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

在pom文件导入相关依赖

  
  
   org.apache.commons
   commons-lang3
   3.3.2
  
  
    commons-codec
    commons-codec
   

添加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加密方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


推荐阅读
  • 本文详细介绍了Android系统的四层架构,包括应用程序层、应用框架层、库与Android运行时层以及Linux内核层,并提供了如何关闭Android系统的步骤。 ... [详细]
  • 探讨密码安全的重要性
    近期,多家知名网站如CSDN、人人网、多玩、开心网等的数据库相继被泄露,其中大量用户的账户密码因明文存储而暴露无遗。本文将探讨黑客获取密码的常见手段,网站如何安全存储用户信息,以及用户应如何保护自己的密码。 ... [详细]
  • 本文介绍了蓝牙低功耗(BLE)中的通用属性配置文件(GATT),包括其角色、层次结构、属性、特性和服务等内容。 ... [详细]
  • 地铁施工人员定位技术探析
    随着城市化进程的加速,地铁已成为城市交通的重要组成部分。各地地铁建设如火如荼,涉及大量隧道挖掘和建设工作,这使得施工人员的安全管理变得尤为重要。 ... [详细]
  • Tomcat SSL 配置指南
    本文详细介绍了如何在 Tomcat 中配置 SSL,以确保 Web 应用的安全性。通过正确的配置,可以启用 HTTPS 协议并保护数据传输的安全。 ... [详细]
  • 本文详细介绍了 `org.apache.hadoop.hdfs.server.namenode.FSNamesystem.shouldUseDelegationTokens()` 方法的用途和实际应用场景,并提供了多个代码示例以帮助开发者更好地理解和使用该方法。 ... [详细]
  • mysql 授权!!
    为什么80%的码农都做不了架构师?MySQL的权限系统围绕着两个概念:认证-确定用户是否允许连接数据库服务器授权-确定用户是否拥有足够的权限执 ... [详细]
  • 本文详细介绍了如何使用Heartbeat构建一个高可用性的Apache集群,包括安装、配置和测试步骤。 ... [详细]
  • 本文介绍了如何使用Java实现数组的冒泡排序算法,以及如何利用Scanner类动态给数组赋值并进行数组扩容。文章详细解释了冒泡排序的原理和步骤,并提供了代码示例。 ... [详细]
  • 本文介绍如何使用匿名内部类实现工厂模式,通过定义接口和工厂接口来创建不同的服务实现。 ... [详细]
  • 深入解析Python进程间通信:Queue与Pipe的应用
    本文详细探讨了Python中进程间通信的两种常用方法——Queue和Pipe,并通过具体示例介绍了它们的基本概念、使用方法及注意事项。 ... [详细]
  • 快速排序的性能高度依赖于基准元素(主元)的选择。如果每次递归调用时,划分都极度不平衡,即一个子问题包含 n-1 个元素而另一个子问题为空,则会导致最坏情况的发生。本文将探讨如何通过选择合适的主元来优化快速排序算法,使其在最坏情况下也能达到 O(n log n) 的时间复杂度。 ... [详细]
  • 本文介绍了如何在Linux系统中将命令添加到PATH环境变量中,以便在任何位置都能直接运行这些命令。PATH是一个包含多个目录路径的字符串变量,当输入不带路径的命令时,系统会在这些路径中查找并执行相应的命令。 ... [详细]
  • 前言:由于Android系统本身决定了其自身的单线程模型结构。在日常的开发过程中,我们又不能把所有的工作都交给主线程去处理(会造成UI卡顿现象)。因此,适当的创建子线程去处理一些耗 ... [详细]
  • pypy 真的能让 Python 比 C 还快么?
    作者:肖恩顿来源:游戏不存在最近“pypy为什么能让python比c还快”刷屏了,原文讲的内容偏理论,干货比较少。我们可以再深入一点点,了解pypy的真相。正式开始之前,多唠叨两句 ... [详细]
author-avatar
我是个密_916
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有