`

MD5盐值加密

    博客分类:
  • java
 
阅读更多
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

分享到:
评论

相关推荐

    js 实现 md5 加密

    javascript 实现 md5 加密。

    java实现Md5加盐加密算法

    对接接口时用到的一种常用加密算法,常用于验证签名,使用shiro-all-1.4.1.jar,可自行下载

    java MD5加密工具类

    接下来,我们可以创建一个名为`MD5Utils`的工具类,包含一个静态方法`encodeToMD5(String input)`用于进行MD5加密: ```java public class MD5Utils { public static String encodeToMD5(String input) { try { ...

    jquery实现MD5加密

    在前端开发中,有时候为了增强数据安全性,可能需要在客户端对敏感信息进行MD5加密。jQuery是一个流行的JavaScript库,虽然它主要用于DOM操作和事件处理,但通过扩展,我们可以在jQuery环境下实现MD5加密。 首先,...

    MD5加密就JS文件

    `hex_md5(需要加密的字符串)` 是一个典型的MD5加密函数调用方式,其中`hex_md5`是函数名,括号内的是待加密的字符串。这个函数会返回一个32位的16进制表示的MD5摘要。例如,如果你有一个字符串 "hello",经过`hex_md...

    MD5 加密解密例子

    在实际项目中,为了增强安全性,通常会结合盐值(Salt)进行MD5加密。盐值是一个随机生成的字符串,与原始密码结合后再进行哈希运算,这样即使相同的密码也会生成不同的哈希值,大大增加了破解的难度。 在Struts、...

    C# MD5加密 实例源码(加密解密)

    MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的数据转化为固定长度的摘要,通常用于数据完整性校验和密码加密。在C#编程语言中,MD5加密也是一项常用的技术。下面我们将深入探讨C#...

    JS(javascript)-md5加密工具类

    JavaScript中的MD5加密工具类是用于对数据进行安全哈希的一种方法,广泛应用于密码存储、数据完整性校验等场景。MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能将任意长度的输入转化为固定长度的...

    MD5 加密工具源码

    在标题中提到的“MD5加密工具源码”,是指一个专门用于MD5哈希运算的程序代码。这个工具被设计成一个独立的类,可以方便地对输入数据进行MD5加密,并生成16位的哈希值。默认情况下,该工具会生成大写的哈希字符串,...

    MD5加密(有盐+无盐).zip

    在Java中实现MD5加密,可以使用`java.security.MessageDigest`类。以下是一个简单的MD5无盐加密示例: ```java import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public ...

    md5加密,原生js使用md5加密

    在JavaScript环境中,尽管JavaScript本身并不内置MD5函数,但可以通过引入外部库,如`jquery.md5.js`来实现MD5加密。 以下是对MD5加密和如何在原生JavaScript中使用MD5进行密码加密的详细讲解: 1. MD5的工作原理...

    Excel使用的Md5加密宏与使用范例

    5. **扩展应用**:除了基本的加密,MD5还可以用于比较文件的完整性,例如,下载大文件后,可以通过计算本地文件和服务器上文件的MD5值来验证文件是否完整无误。 6. **学习资源**:学习VBA和MD5宏编写,可以参考在线...

    几个MD5加密的例子

    MD5-2、MD5-3和MD5-4可能分别展示了不同加密方式或不同输入数据的MD5值,比如使用盐值(salt)增强加密的安全性。 盐值是一种随机数据,附加到原始密码之前或之后再进行MD5加密,这样即使相同的密码也会产生不同的...

    C# MD5加密实例

    在C#中,我们可以使用System.Security.Cryptography命名空间中的MD5类来实现MD5加密。下面是一个具体的C# MD5加密的实例: ```csharp using System; using System.Text; using System.Security.Cryptography; ...

    JavaScript前端md5加密

    JavaScript前端MD5加密是一种常见的数据安全处理技术,用于在客户端对敏感信息进行预处理,以保护数据不被轻易破解。MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能将任意长度的输入转化为固定...

    MD5密码加密文档

    MD5(Message-Digest Algorithm 5)是一种广泛应用于网络安全领域的哈希函数,它能够将任意长度的数据转换为固定长度的摘要信息。这个过程是不可逆的,也就是说,从MD5摘要无法还原原始数据,这就为数据的安全存储和...

    加密和解密(MD5)

    在Winform环境下,C#提供了System.Security.Cryptography命名空间,该命名空间包含了MD5类,允许开发者方便地进行MD5加密和解密操作。然而,需要明确的是,MD5并不支持解密,因为它是一种单向函数,即数据经过MD5...

    spring Scurity终于测试OK了

    pring Scurity终于测试OK了,复杂的功能还待深入研究!...什么md5 盐值 加密 生成,cookie 生成序列保存数据库, sessionID防护的一大堆安全,资源权限分配和保护 等。。。值得一学的框架! sql 脚本也在一起

    java生成md5密码加盐

    MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,可以将任意长度的输入转化为固定长度的输出,通常用于数据校验和密码存储。然而,由于MD5的碰撞攻击弱点,直接使用MD5来存储密码已经不够安全。为了...

Global site tag (gtag.js) - Google Analytics