* SpringBoot整合 shiro 之 盐值加密认证 * * 加盐认证: 设置加密次数 1 * * 当两个用户的密码相同时,单纯使用不加盐的MD5加密方式,会发现数据库中存在相同结构的密码,这样也是不安全的。我们希望即 * 便是两个人的原始密码一样,加密后的结果也不一样。如何做到呢?其实就好像炒菜一样,两道一样的鱼香肉丝...
4. 以上的加密还存在问题,如果两个人的密码一样,即存在数据表里中的两个加密后的字符串一样,然而我们希望即使两个人的密码一样,加密后的两个字符串也不一样。即需要用到MD5盐值加密。 1).修改Realm使用盐值加密 完整的ShiroRealm.java public class ShiroRealm extends AuthenticatingRealm { @Override protected...
其中principal是账号信息,hashedCredentials是MD5加密后的密码,credentialsSalt是密码加密的 盐值,realmName为当前realm对象的name。 对于盐值credentialsSalt,在Shiro中为org.apache.shiro.util.ByteSource对象: ByteSource credentialsSalt = ByteSource.Util.bytes(""); ByteSource提供了一个内部方法,可以将字符串转换为对应...
Subject currentUser=SecurityUtils.getSubject();if(!currentUser.isAuthenticated()) {//对密码进行MD5盐值加密String enPassword =getEnPassword(username,password);//把用户名和密文密码封装为UsernamePasswordToken对象,这个token会被传到Realm中比对UsernamePasswordToken token =newUsernamePasswordToken(username, enPass...
int hashIterations = 1024;//加密次数 SimpleHash simpleHash = new SimpleHash(algorithmName,source,salt,hashIterations); System.out.println(simpleHash);//打印出经过盐值、加密次数、md5后的密码 } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
替换当前Realm的CredentialsMatcher属性,可以使用Md5CredentialsMatcher但是推荐使用HashedCredentialsMatcher对象,并设置加密算法 加密的流程 1.为什么使用MD5盐值加密: 2.如何做到: 2.1在doGetAuthenticationInfo方法返回值创建SimpleAuthenticationInfo对象的时候,需要使用SimpleAuthenticationInfo(principal,credentials, credentialSalt,re...
MD5加密 主要特性 抗修改(哪怕原文只有一点点的不同,得到的MD5值也是完全不同的,而相反的只要原文一致,则得到的MD5值则会一样) 非对称性(可以正着加密,无法被逆着破解) MD5加密时为原文“加盐” 所谓加盐,就是为原文加上一个指定的字符串 由于MD5拥有抗修改的特性(原文一致,则得到的MD5值则会一样),所以...
// 2.保存数据 // 2.1 创建一个盐值(用于辅助加密,保证密码更加安全的一种手段) String salt = UUID.randomUUID().toString(); String pwd = entity.getPassword(); // 2.3 对密码进行加密,加密算法md5 SimpleHash sh = // 这个api属于shiro框架,后续需要引入shiro依赖 new SimpleHash("MD5", // algorithm...
加盐加密会使用户的密码受到相对安全的保护,比普通的MD5加密要好。用户数据暴露给了用户,因为有盐值的存在,也很难拿到用户的原始密码。即时拿到了,也会增加破解难度。 Shiro权限框架有加盐加密的实现,下面就简单描述下自己实现的过程。 盐值 我使用的盐值是32的随机字符串,盐值越长,保密性相对越好。不过,有看到...
MD5算法盐值加密 String pswd= "123456"; String salt = "123"; String md5 = new Md5Hash(pswd, salt).toString(); 另外散列时还可以指定散列次数,new Md5Hash(pswd, salt, 2).toString(),数字2代表加密次数。 SHA256 算法盐值加密 String pswd= "123456"; String salt = "123"; String sha = new...