- 浏览: 479458 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
feibabm:
楼主,想问下,我配置的这个拦截器为啥没有生效呢?import ...
spring-boot 加入拦截器Interceptor -
yhxf_ie:
项目跑步起来啊,打印完日志就 Process finished ...
spring-boot集成EasyUI和KindEditor -
yhxf_ie:
...
spring-boot集成EasyUI和KindEditor -
lihao312:
什么都不懂的孩子 写道请问一下registry.addInte ...
spring-boot 加入拦截器Interceptor -
爱you不释手:
1 、2 楼 那句的意思是加入名称为UserSecurityI ...
spring-boot 加入拦截器Interceptor
package com.lance.utils; import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.PBEKeySpec; import org.apache.commons.lang3.StringUtils; /** * @author lance 2014-06-10 * 提供部分加密方法 */ public class EncryptUtils { /** * 对字符串进行MD5进行加密处理 * @param msg 待加密的字符串 * @return 加密后字符串 */ public static String encryptMD5(String msg){ return encrypt(msg, null); } /** * 基本加密处理 * @param msg * @param typt * @return */ private static String encrypt(String msg, String type){ MessageDigest md; StringBuilder password = new StringBuilder(); try { md = MessageDigest.getInstance("MD5"); if(StringUtils.isNoneBlank(type)){ md.update(type.getBytes()); }else { md.update(msg.getBytes()); } byte[] bytes = md.digest(); for (int i = 0; i < bytes.length; i++) { String param = Integer.toString((bytes[i] & 0xff) + 0x100, 16); password.append(param.substring(1)); } } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return password.toString(); } /** * 盐值的原理非常简单,就是先把密码和盐值指定的内容合并在一起,再使用md5对合并后的内容进行演算, * 这样一来,就算密码是一个很常见的字符串,再加上用户名,最后算出来的md5值就没那么容易猜出来了。 * 因为攻击者不知道盐值的值,也很难反算出密码原文。 * @param msg * @return */ public static String encryptSalt(String msg) { String salt = getSalt(); return encrypt(msg, salt); } /** * SHA(Secure Hash Algorithm,安全散列算法)是消息摘要算法的一种,被广泛认可的MD5算法的继任者。 * SHA算法家族目前共有SHA-0、SHA-1、SHA-224、SHA-256、SHA-384和SHA-512五种算法, * 通常将后四种算法并称为SHA-2算法 * @param msg * @return */ public static String encryptSHA(String msg) { String salt = getSaltSHA1(); StringBuilder sb = new StringBuilder(); try{ MessageDigest md = MessageDigest.getInstance("SHA-1"); md.update(salt.getBytes()); byte[] bytes = md.digest(msg.getBytes()); for(int i=0; i< bytes.length ;i++){ sb.append(Integer.toString((bytes[i] & 0xff) + 0x100, 16).substring(1)); } }catch(Exception e){ } return sb.toString(); } /** * PBKDF2加密 * @param msg * @return */ public static String encryptPBKDF2(String msg) { try { int iterations = 1000; char[] chars = msg.toCharArray(); byte[] salt = getSalt().getBytes(); PBEKeySpec spec = new PBEKeySpec(chars, salt, iterations, 64 * 8); SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); byte[] hash = skf.generateSecret(spec).getEncoded(); return iterations + toHex(salt) + toHex(hash); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 转化十六进制 * @param array * @return */ private static String toHex(byte[] array) { BigInteger bi = new BigInteger(1, array); String hex = bi.toString(16); int paddingLength = (array.length * 2) - hex.length(); if(paddingLength > 0) { return String.format("%0" +paddingLength + "d", 0) + hex; }else{ return hex; } } /** * [list] * [*]SHA-1 (Simplest one – 160 bits Hash) * [*]SHA-256 (Stronger than SHA-1 – 256 bits Hash) * [*]HA-384 (Stronger than SHA-256 – 384 bits Hash) * [*]SHA-512 (Stronger than SHA-384 – 512 bits Hash) * [/list] * @return */ private static String getSaltSHA1(){ SecureRandom sr; byte[] salt = new byte[16]; try { sr = SecureRandom.getInstance("SHA1PRNG"); sr.nextBytes(salt); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return salt.toString(); } /** * 盐值的原理非常简单,就是先把密码和盐值指定的内容合并在一起,再使用md5对合并后的内容进行演算, * 这样一来,就算密码是一个很常见的字符串,再加上用户名,最后算出来的md5值就没那么容易猜出来了。 * 因为攻击者不知道盐值的值,也很难反算出密码原文。 * @return */ private static String getSalt(){ SecureRandom sr; byte[] salt = new byte[16]; try { sr = SecureRandom.getInstance("SHA1PRNG", "SUN"); sr.nextBytes(salt); } catch (Exception e) { e.printStackTrace(); } return salt.toString(); } public static void main(String[] args) { System.out.println(EncryptUtils.encryptMD5("123456")); System.out.println(EncryptUtils.encryptSalt("123456")); System.out.println(EncryptUtils.encryptSHA("123456")); System.out.println(EncryptUtils.encryptPBKDF2("123456")); } }
demo地址
https://github.com/leelance/spring-boot-all/blob/master/spring-boot-samples/src/main/java/com/lance/utils/EncryptUtils.java
评论
3 楼
824543224
2016-05-03
保存密码的同时,也保存盐值,下次验证时用保存的盐值来生成的密码和保存的密码比较。
2 楼
xishan
2016-03-18
jing981111 写道
你好,请问如果加密的时候是随机的盐值 每次加密后的值都不一样.哪怎么才能验证呢?根据什么值来验证?
把盐值也保存到数据库。
1 楼
jing981111
2015-11-17
你好,请问如果加密的时候是随机的盐值 每次加密后的值都不一样.哪怎么才能验证呢?根据什么值来验证?
发表评论
-
Spring-boot集成Netty做websocket服务端
2017-06-21 13:47 19503spring-boot-websocket-netty-s ... -
spring-boot集成Springfox-Swagger2
2016-10-12 21:47 4808spring-boot-springfox sprin ... -
spring-boot集成Quartz
2016-10-09 20:40 13709spring-boot集成Quartz <depe ... -
spring-boot集成EasyUI和KindEditor
2016-09-25 12:12 3372spring-boot-easyui-kindeditor ... -
spring-boot集成sitemesh装饰器
2016-09-02 09:41 6823spring-boot-sitemesh, 依赖sprin ... -
spring-boot 代码生成工具
2016-08-17 10:38 4696Mybatis Auto Code Generation Ma ... -
spring-boot集成Freemarker开发
2016-07-10 11:38 210621.该demo功能 http://localhost/syst ... -
spring-boot集成shiro
2016-07-07 13:35 21218引用 项目启动后输入:http://localhost/ 该项 ... -
spring集成ActiveMQ, 消息提供者
2016-06-15 13:47 19441.spring集成ActiveMQ,依赖包 <de ... -
记录springmvc+ueditor1.4.3上传附件问题
2015-08-27 14:42 9175百度富文本编辑器地址:http://ueditor.baidu ... -
mvn jetty:run内存溢出解决
2014-12-08 12:22 1915maven内存溢出 apache-maven-3.1.0\b ... -
POI写入Excel下拉框[Select选项]
2014-08-14 09:45 14127记录部分方法, 操作POI POI version &l ... -
设置java的JTextPane字体加粗
2014-05-16 10:14 2692package manage; import jav ... -
程序出错后,程序员给测试人员的20条高频回复
2014-02-18 22:12 783程序出错后 20. “That’ ... -
java字符全角转半角
2013-08-16 00:36 1453说明: 只为记录生活中的点点滴滴, 看到ITeye发 ... -
利用apache的poi上传excel
2013-07-22 11:34 20081.做个简单的导入excel功能, 只为记录简单demo, ... -
利用spring security控制同一个用户只能一次登陆
2013-07-18 14:04 96311.描述 最近在网上看了很多关于一个用户同时只能登陆一次问 ... -
获取System基本配置信息
2013-06-27 16:57 11371.获取基本信息 package com.foo.test ... -
java反射简单记录
2013-06-08 11:17 17791. Java 反射API的第一个主要作用是获取程序在运行 ... -
我来模仿iTeye登录(HttpClient)
2013-06-05 13:49 31001.利用HttpClient模拟iteye登录 packa ...
相关推荐
SALTED-SHA1-PBKDF2算法 提供一个VC6.0的源码工程
MD5,SHA1,SHA256,HMAC,PBKDF2,SCrypt使用OpenCL(GPU,yay!)和Python的暴力破解工具 (c)B.Kerler和CB 2017-2019 为什么 因为仅使用CPU即可暴力破解PBKDF2 / HMAC / SCrypt并哈希MD5 / SHA1 / SHA256 / SHA...
C中的PBKDF2 HMAC SHA256模块 背景 C模块包含一个用于OpenSSL的PBKDF2实现的包装器,以及一个简单的盐生成器。 PKCS#5中定义的PBKDF2(基于密码的密钥派生功能#2)是一种从密码派生随机值的算法。 该算法将伪...
一个简单的加密/解密库,它使用 PBKDF2 从密码中派生出密钥(同时生成安全随机盐),使用 aes-256-cbc 加密并返回一个字符串。 该字符串包括盐、iv、HMAC(hmac-sha1,作为 mac 很好)和密文。 所有这一切的结果是...
Laravel开发-laravel-pbkdf2 PBKdf2哈希
使用PBKD2对数据加密所需要的包,上传共享,方便自己下载
使用加密技术加密你所需要的内容,提高数据安全性
node-pwd, 将密码与pbkdf2进行哈希比较 pwd 散列并将密码与加密的pbkdf2进行比较。安装$ npm install pwd示例在注册生成 salt/密码哈希,并将它的保存到某个位置:var pass = require('p
###MD5 MD5 是一种广泛使用的哈希函数。 它已被用于各种安全应用程序,也常用于检查文件的完整性。 但是,MD5 不是抗冲突的,它不适合依赖此属性的应用程序,例如 SSL 证书或数字签名。 var digest = Crypto.MD5(...
包含C#及unitypackage CSDN: https://blog.csdn.net/qq_33537945/article/details/79150140
pbkdf2Sync ( 'password' , 'salt' , 1 , 32 , 'sha512' ). . . 有关API的更多信息,请参见相关的。 为了获得高性能,请使用async变体( pbkdf2.pbkdf2 ),而不要使用pbkdf2.pbkdf2Sync ,此变体在浏览器化后可以...
目前crypto-js已支持的算法有:MD5,SHA-1,SHA-256,AES,Rabbit,MARC4,HMAC,HMAC-MD5,HMAC-SHA1,HMAC-SHA256,PBKDF2。常用的加密方式有MD5和AES,使用时可以引用总文件,也可以单独引用某一文件。
目前crypto-js已支持的算法有:MD5,SHA-1,SHA-256,AES,Rabbit,MARC4,HMAC,HMAC-MD5,HMAC-SHA1,HMAC-SHA256,PBKDF2。常用的加密方式有MD5和AES,使用时可以引用总文件,也可以单独引用某一文件。
SHA256 哈希密码算法C语言实现 亲测好用。只要SHA256的实现。
具有 PKCS#5 v2.0 中定义的 HmacSHA512 伪随机函数 (PRF) 的 PBKDF2。 这是取自 OpenJDK 的此类的修补版本: PBKDF2HmacSHA1 工厂。 类 PBKDF2KeyImpl 根本没有被修改。 与标准实现的唯一区别是使用 SHA512 而...
示例代码中利用“异或操作”实现对文件加密。首先,建立两个*.txt文件,分别将其命名为“原文件.txt”,“key.text”,“原文件.txt”为需要加密的文件,“key.text”为密钥文件,运行代码后“原文件.txt”被加密,再...
pbkdf2-utils 一些使用 pbkdf2 的辅助工具 var pbkdf2 = require ( 'pbkdf2-utils' ) ; pbkdf2 . hash ( password , iterations , callback ) ; pbkdf2 . hash ( password , iterations , len , callback ) ; ...
安装npm i django-hash如何散列const djangoHash = require ( 'django-hash' ) ;...// Hashed: pbkdf2_sha256$100000$hxtU/X2nCSo=$WREDUhqfScrEya9kjkHtK/T4hhRG1Y22roZS2EkJSWU=如何验证const djan
文字在线加密解密、散列/哈希、BASE64、SHA1、SHA224、SHA256、SHA384、SHA512、MD5、HmacSHA1、HmacSHA224、HmacSHA256、HmacSHA384、HmacSHA512、HmacMD5、urlencode、urldecode