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,可自行下载
MD5加密技术非常简单,只需调用一个方法即可!
pring Scurity终于测试OK了,复杂的功能还待深入研究!...什么md5 盐值 加密 生成,cookie 生成序列保存数据库, sessionID防护的一大堆安全,资源权限分配和保护 等。。。值得一学的框架! sql 脚本也在一起
md5加密有盐+无盐,自己解压。
Java使用MD5加盐进行加密-附件资源
不知道大家知不知道,在开发的时候如果直接给密码散列,黑客可以通过查散列值字典(例如MD5密码破解网站),得到某用户的密码。但如果加上salt后就会难上很多,即便是你获得了其中的salt和最终密文,破解也是相当麻烦...
尚硅谷_Shiro_密码的MD5盐值加密 · 13.尚硅谷_Shiro_多 Realm 验证 · 14.尚硅谷_Shiro_认证策略 · 15.尚硅谷_Shiro_把 realms 配置给 SecurityManager · 16. 尚硅谷_Shiro_权限配置 · 17.尚硅谷_Shiro_...
一个多功能加密解密工具,支持QQtools、MD5、DES、AES、SHA256、Base64 等多种加密解密方式,并支持随机盐,附有源码,可直接编译使用。
spring boot 2.2.5+ mybatis plus 3.3.1.tmp+ thymeleaf 全栈博客+ Shiro安全验证框架(使用md5盐值加密)+sematic UI+看板娘+Jquery项目已经部署了可以访问www.yrqblog.top2020.3.29更新网站正式上线网站技术内容使用...
个人在开发中使用到的一个工具类,对字符串简单的加密,使用的是java提供的类
3. 盐值、迭代散列和按键拉伸是解决MD5算法安全问题的方法。 4. 在密码存储中,使用MD5算法需要结合其他安全措施,以确保数据安全。 扩展知识点: 1. 哈希算法的类型:哈希算法可以分为两种:_collisions_和_pre-...
crypt()函数用于返回使用DES、Blowfish或MD5算法加密过后的字符串,crypt(str,salt)接受2个参数,第1个为需要加密的字符串,第2个为盐值(加密干扰值,如果没有提供,则默认由PHP自动生成),返回的字符串为散列的...
文章分析了MD5算法发展、危机、碰撞分析并加入"盐值"对算法做了改进,然后给出了其C++的具体实现算法;分析MD5特征码的特点构建了特征库配置文件,用VC实现了基于特征码的杀毒软件,此软件能根据文件特征码(MD5值)...
discuz注册时,会把密码按一个规则加密。 ...复制代码 代码如下:echo md5(...第一次md5后的值再加上盐值(salt)再进行md5,就是要得到的值了。 试一下 复制代码 代码如下:echo md5(md5(‘123456′).’d82a35’);
签名算法加密:也可以理解为单向哈希加密,比如MD5, SHA1等。加密算法固定,容 易被暴力破解。如果密码相同,得到的哈希值是一样的。 加盐哈希加密:加密时混入一段“随机”字符串(盐值)再进行哈希加密。即使...
springboot源码(初步学习)springboot登录注册页面, 包含密码生成盐值,md5加密。登录和注册功能。 含数据库文件。
还没连接HTML页面的springboot项目(不齐全项目),功能简易包含密码md5补全数据-加密后的密码、盐值。连接好数据库(含sql文件)