/** * */ package com.wuhongbo.common.util.encry; import java.security.MessageDigest; /** * MD5加密 * * @author wuhongbo */ public class MD5Util { private final static char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' }; /** * MD5加密 * * @param s * 加密内容 * @param hex * 字符长度必须为16位,允许为空或长度为0 * @return * @throws Exception */ public static String encode(String s, char[] hex) throws Exception { if (hex == null || hex.length == 0) { hex = hexDigits; } else if (hex.length != 16) { throw new Exception("掩码长度必须是16位的字符串"); } try { byte[] strTemp = s.getBytes(); MessageDigest mdTemp; mdTemp = MessageDigest.getInstance("MD5"); byte[] md = mdTemp.digest(strTemp); // 处理掩码 StringBuffer sb = new StringBuffer(); for (int i = 0; i < md.length; i++) { int num = md[i]; // String temp = Integer.toHexString(num & 0xFF); // if (temp.length() == 1) // { // temp = "0" + temp; // } // sb.append(temp.toUpperCase()); int n = num; if (n < 0) { n += 256; } int d1 = n / 16; int d2 = n % 16; String temp =hexDigits[d1] + "" + hexDigits[d2]; sb.append(temp); } // 掩码处理 return sb.toString().toUpperCase(); } catch (Exception e) { throw new Exception("加密失败,请检查加密码算法。"); } } /** * MD5加密 * * @param s * 加密内容 * @param hex * 掩码,字符长度必须为16位,允许为空或长度为0 * @return * @throws Exception */ public static String encode(String s, String hexStr) throws Exception { if (hexStr == null) { hexStr = ""; } return encode(s, hexStr.toCharArray()); } /** * MD5加密 * * @param s * 加密内容 * @return * @throws Exception */ public static String encode(String s) throws Exception { return encode(s, ""); } // 测试主函数 public static void main(String args[]) { try { System.out.println("MD5后:" + encode("admin")); } catch (Exception e) { e.printStackTrace(); } } }
相关推荐
本文将详细介绍Java和SpringBoot如何实现加盐的MD5密码生成。 首先,MD5是一种单向哈希函数,它将任意大小的数据转换为128位的哈希值,通常以32位的十六进制字符串表示。其优点是计算速度快,但缺点是容易遭受彩虹...
java MD5密码加密.
java实现md5 加密解密(在网络中MD5是著名的不可逆算法,但是如果知道MD5的加密的字符串 则可以通过自己的加密算法对明文进行加密,对加密后的密文与字符串匹配; 匹配成功,表示找到明文;但是此程序的时间耗费较高!仅...
在IT行业中,密码的安全性是至关重要的,尤其是在网络服务中,如用户登录...总的来说,MD5在Java中的使用提供了一种简单的密码加密方式,但随着技术的发展,开发者应考虑使用更强大的加密策略来保护用户的敏感信息。
5. **MD5与密码安全**:在处理用户密码时,直接使用MD5加密存在风险,因为彩虹表可以快速破解MD5散列。现代做法是结合加盐(salt)和多次迭代的哈希算法(如bcrypt或scrypt),增加破解难度。 6. **替代方案**:...
为了增加安全性,通常会结合加盐(Salt)策略,即在密码前或后添加一个随机字符串再进行MD5加密,这样即使两个用户使用相同的密码,其加密结果也会不同,从而降低彩虹表攻击的风险。此外,还可以使用多次迭代的哈希...
java实现MD5加密解密算法,java源代码~
总的来说,Java MD5加密数据库连接池密码是一种提高系统安全性的常见做法,通过加密处理,即使数据库配置信息被泄露,也能降低密码被直接利用的风险。同时,了解如何在Java程序中实现MD5加密和解密,对于开发和维护...
对接接口时用到的一种常用加密算法,常用于验证签名,使用shiro-all-1.4.1.jar,可自行下载
在Java编程语言中,MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,主要目的是为了产生一个固定长度的、不可逆的数字摘要,常用于存储密码。MD5算法将任意长度的输入(也叫做预映射,pre-image)通过...
### JAVA_对文件进行MD5加密 在计算机科学与信息安全领域中,MD5(Message-Digest Algorithm 5)是一种广泛使用的散列函数,能够将任意长度的数据映射为一个固定长度(通常是128位)的十六进制数值。这种算法在数据...
在Java中,MD5常用于数据的完整性校验和密码存储,因为其产生的摘要具有不可逆性,即无法通过摘要反推出原始数据。下面我们将深入探讨MD5加密在Java中的实现及其应用。 MD5加密的基本原理是,对输入的数据进行一...
在Java中,MD5通常被用来对敏感数据进行单向加密,如密码存储,防止数据泄露。下面我们将详细讨论Java中MD5加密的原理、使用场景以及如何实现。 MD5加密的基本原理: MD5算法是一种非对称的加密算法,它将输入的...
在Java编程语言中,MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它将任意长度的数据转化为固定长度的输出,通常为32位的16进制字符串。MD5的主要用途是对数据进行校验,确保数据在传输过程中没有被...
MD5加密jar包是将MD5算法封装到Java程序中的库,方便开发者在Java应用中快速实现MD5加密功能。 MD5的特点: 1. **不可逆性**:MD5算法是单向的,即给定一个输入,可以得到一个固定长度的摘要,但不能通过摘要反推出...
### 在Java中使用MD5进行密码加密 #### 知识点概述 在现代软件开发过程中,安全性至关重要。尤其是在处理敏感信息如用户密码时,确保数据的安全性和隐私性尤为重要。MD5(Message-Digest Algorithm 5)是一种广泛...
提供的"lib"目录下的jar包可能包含了用于MD5计算的库,比如`java.security.MessageDigest`类,这是Java标准库中用于哈希计算的基础类。开发者可以通过这个类的实例来生成MD5摘要。 3. **main类文件**: 这个...
本主题涉及的是在Java后台与前端JavaScript之间利用AES(Advanced Encryption Standard)进行加解密,以及前端的MD5(Message-Digest Algorithm 5)加密技术。以下是关于这些知识点的详细解释: 1. **AES加密**:...
MD5在信息安全领域扮演着重要的角色,常用于数据校验、密码存储等方面。然而,由于其存在碰撞漏洞(即不同的输入可能会产生相同的输出),MD5现在更多地被用于验证文件完整性,而非敏感数据的加密。 在Java中实现MD...
在IT行业中,MD5主要应用于数据完整性校验、密码存储和文件校验。 **MD5的原理与特点** 1. **非可逆性**:MD5算法是单向的,即从原始数据生成的MD5摘要无法还原成原始数据,这使得它不适合用于加密。 2. **抗碰撞**...