`

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加密工具类

    MD5加密技术非常简单,只需调用一个方法即可!

    spring Scurity终于测试OK了

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

    php结合md5实现的加密解密方法

    主要介绍了php结合md5实现的加密解密方法,涉及PHP字符串操作及加密解密算法实现技巧,需要的朋友可以参考下

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

    md5加密有盐+无盐,自己解压。

    Java使用MD5加盐进行加密-附件资源

    Java使用MD5加盐进行加密-附件资源

    如何给MD5加上salt随机盐值

    不知道大家知不知道,在开发的时候如果直接给密码散列,黑客可以通过查散列值字典(例如MD5密码破解网站),得到某用户的密码。但如果加上salt后就会难上很多,即便是你获得了其中的salt和最终密文,破解也是相当麻烦...

    尚硅谷Shiro视频教程

    尚硅谷_Shiro_密码的MD5盐值加密 · 13.尚硅谷_Shiro_多 Realm 验证 · 14.尚硅谷_Shiro_认证策略 · 15.尚硅谷_Shiro_把 realms 配置给 SecurityManager · 16. 尚硅谷_Shiro_权限配置 · 17.尚硅谷_Shiro_...

    加密解密工具支持随机盐(带源码)

    一个多功能加密解密工具,支持QQtools、MD5、DES、AES、SHA256、Base64 等多种加密解密方式,并支持随机盐,附有源码,可直接编译使用。

    blog_yrq:spring boot + mybatisplus + thymeleaf 全栈博客!

    spring boot 2.2.5+ mybatis plus 3.3.1.tmp+ thymeleaf 全栈博客+ Shiro安全验证框架(使用md5盐值加密)+sematic UI+看板娘+Jquery项目已经部署了可以访问www.yrqblog.top2020.3.29更新网站正式上线网站技术内容使用...

    加密代码,先是SHA然后盐值,最后MD5

    个人在开发中使用到的一个工具类,对字符串简单的加密,使用的是java提供的类

    PHP常见加密函数用法示例【crypt与md5】

    crypt()函数用于返回使用DES、Blowfish或MD5算法加密过后的字符串,crypt(str,salt)接受2个参数,第1个为需要加密的字符串,第2个为盐值(加密干扰值,如果没有提供,则默认由PHP自动生成),返回的字符串为散列的...

    MD5加密算法改进及其特征码在杀毒软件中的应用

    文章分析了MD5算法发展、危机、碰撞分析并加入"盐值"对算法做了改进,然后给出了其C++的具体实现算法;分析MD5特征码的特点构建了特征库配置文件,用VC实现了基于特征码的杀毒软件,此软件能根据文件特征码(MD5值)...

    浅谈discuz密码加密的方式

    discuz注册时,会把密码按一个规则加密。 ...复制代码 代码如下:echo md5(...第一次md5后的值再加上盐值(salt)再进行md5,就是要得到的值了。 试一下 复制代码 代码如下:echo md5(md5(‘123456′).’d82a35’); 

    Flask框架中密码的加盐哈希加密和验证功能的用法详解

    签名算法加密:也可以理解为单向哈希加密,比如MD5, SHA1等。加密算法固定,容 易被暴力破解。如果密码相同,得到的哈希值是一样的。 加盐哈希加密:加密时混入一段“随机”字符串(盐值)再进行哈希加密。即使...

    源码shoot10.17.rar(0积分下载)

    springboot源码(初步学习)springboot登录注册页面, 包含密码生成盐值,md5加密。登录和注册功能。 含数据库文件。

    springboot项目(0积分下载)

    还没连接HTML页面的springboot项目(不齐全项目),功能简易包含密码md5补全数据-加密后的密码、盐值。连接好数据库(含sql文件)

Global site tag (gtag.js) - Google Analytics