import java.security.MessageDigest; import java.util.Random; import org.apache.commons.codec.binary.Hex; public class PasswordUtil { /** * 生成含有随机盐的密码 */ public static String generate(String password) { Random r = new Random(); StringBuilder sb = new StringBuilder(16); sb.append(r.nextInt(99999999)).append(r.nextInt(99999999)); int len = sb.length(); if (len < 16) { for (int i = 0; i < 16 - len; i++) { sb.append("0"); } } String salt = sb.toString(); password = md5Hex(password + salt); char[] cs = new char[48]; for (int i = 0; i < 48; i += 3) { cs[i] = password.charAt(i / 3 * 2); char c = salt.charAt(i / 3); cs[i + 1] = c; cs[i + 2] = password.charAt(i / 3 * 2 + 1); } return new String(cs); } /** * 校验密码是否正确 */ public static boolean verify(String password, String md5) { char[] cs1 = new char[32]; char[] cs2 = new char[16]; for (int i = 0; i < 48; i += 3) { cs1[i / 3 * 2] = md5.charAt(i); cs1[i / 3 * 2 + 1] = md5.charAt(i + 2); cs2[i / 3] = md5.charAt(i + 1); } String salt = new String(cs2); return md5Hex(password + salt).equals(new String(cs1)); } /** * 获取十六进制字符串形式的MD5摘要 */ public static String md5Hex(String src) { try { MessageDigest md5 = MessageDigest.getInstance("MD5"); byte[] bs = md5.digest(src.getBytes()); return new String(new Hex().encode(bs)); } catch (Exception e) { return null; } } public static void main(String[] args) { String password = generate("admin"); System.out.println(verify("admin", password)); } }
引至:http://blog.csdn.net/xiaocha2008/article/details/42872195
相关推荐
javascript 实现 md5 加密。
对接接口时用到的一种常用加密算法,常用于验证签名,使用shiro-all-1.4.1.jar,可自行下载
接下来,我们可以创建一个名为`MD5Utils`的工具类,包含一个静态方法`encodeToMD5(String input)`用于进行MD5加密: ```java public class MD5Utils { public static String encodeToMD5(String input) { try { ...
在前端开发中,有时候为了增强数据安全性,可能需要在客户端对敏感信息进行MD5加密。jQuery是一个流行的JavaScript库,虽然它主要用于DOM操作和事件处理,但通过扩展,我们可以在jQuery环境下实现MD5加密。 首先,...
`hex_md5(需要加密的字符串)` 是一个典型的MD5加密函数调用方式,其中`hex_md5`是函数名,括号内的是待加密的字符串。这个函数会返回一个32位的16进制表示的MD5摘要。例如,如果你有一个字符串 "hello",经过`hex_md...
在实际项目中,为了增强安全性,通常会结合盐值(Salt)进行MD5加密。盐值是一个随机生成的字符串,与原始密码结合后再进行哈希运算,这样即使相同的密码也会生成不同的哈希值,大大增加了破解的难度。 在Struts、...
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的数据转化为固定长度的摘要,通常用于数据完整性校验和密码加密。在C#编程语言中,MD5加密也是一项常用的技术。下面我们将深入探讨C#...
JavaScript中的MD5加密工具类是用于对数据进行安全哈希的一种方法,广泛应用于密码存储、数据完整性校验等场景。MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能将任意长度的输入转化为固定长度的...
在标题中提到的“MD5加密工具源码”,是指一个专门用于MD5哈希运算的程序代码。这个工具被设计成一个独立的类,可以方便地对输入数据进行MD5加密,并生成16位的哈希值。默认情况下,该工具会生成大写的哈希字符串,...
在Java中实现MD5加密,可以使用`java.security.MessageDigest`类。以下是一个简单的MD5无盐加密示例: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public ...
在JavaScript环境中,尽管JavaScript本身并不内置MD5函数,但可以通过引入外部库,如`jquery.md5.js`来实现MD5加密。 以下是对MD5加密和如何在原生JavaScript中使用MD5进行密码加密的详细讲解: 1. MD5的工作原理...
5. **扩展应用**:除了基本的加密,MD5还可以用于比较文件的完整性,例如,下载大文件后,可以通过计算本地文件和服务器上文件的MD5值来验证文件是否完整无误。 6. **学习资源**:学习VBA和MD5宏编写,可以参考在线...
MD5-2、MD5-3和MD5-4可能分别展示了不同加密方式或不同输入数据的MD5值,比如使用盐值(salt)增强加密的安全性。 盐值是一种随机数据,附加到原始密码之前或之后再进行MD5加密,这样即使相同的密码也会产生不同的...
在C#中,我们可以使用System.Security.Cryptography命名空间中的MD5类来实现MD5加密。下面是一个具体的C# MD5加密的实例: ```csharp using System; using System.Text; using System.Security.Cryptography; ...
JavaScript前端MD5加密是一种常见的数据安全处理技术,用于在客户端对敏感信息进行预处理,以保护数据不被轻易破解。MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能将任意长度的输入转化为固定...
MD5(Message-Digest Algorithm 5)是一种广泛应用于网络安全领域的哈希函数,它能够将任意长度的数据转换为固定长度的摘要信息。这个过程是不可逆的,也就是说,从MD5摘要无法还原原始数据,这就为数据的安全存储和...
在Winform环境下,C#提供了System.Security.Cryptography命名空间,该命名空间包含了MD5类,允许开发者方便地进行MD5加密和解密操作。然而,需要明确的是,MD5并不支持解密,因为它是一种单向函数,即数据经过MD5...
pring Scurity终于测试OK了,复杂的功能还待深入研究!...什么md5 盐值 加密 生成,cookie 生成序列保存数据库, sessionID防护的一大堆安全,资源权限分配和保护 等。。。值得一学的框架! sql 脚本也在一起
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,可以将任意长度的输入转化为固定长度的输出,通常用于数据校验和密码存储。然而,由于MD5的碰撞攻击弱点,直接使用MD5来存储密码已经不够安全。为了...