一.密码的比对

 (1.1) 按住UsernamePasswordToken到源代码里,设置断点,进行调试.如下所示:

Shiro 密码的加密应用(六)

(1.2)调试

Shiro 密码的加密应用(六)

Shiro 密码的加密应用(六)

(1.3)调试CredentialsMatcher接口

Shiro 密码的加密应用(六)

选中CredentialsMatcher接口,按住Ctrl+T能查看到有很多加密的方式

Shiro 密码的加密应用(六)

总结:

 通过AuthenticatingRealm 的credentialsMatcher属性来进行密码比对哦!

  doCredentialsMatch(AuthenticationToken token, AuthenticationInfo info);


二.密码的MD5加密

2.1.如何把一个字符串加密为MD5

Shiro 密码的加密应用(六)


2.2.替换当前Realm的credentialsMatch属性,直接使用HashedCredentialsMatch对象,

并设置加密算法就ok!

  application.xml配置文件修改:

Shiro 密码的加密应用(六)

 ShiroRealm类中测试

Shiro 密码的加密应用(六)

 将原来的密码修改成这个加密后的值哦!

Shiro 密码的加密应用(六)

运行也是Ok的!

三.密码的MD5盐值加密

3.1.为何用MD5盐值加密?

   由于两个原始密码相同,加密后也是一样的,那么能否加密后的值不一样呢!
3.2.如何做: 
   (a)在doGetAuthenticationInfo方法返回值创建SimpleAuthenticationInfo对象的时候,
  需要使用 SimpleAuthenticationInfo(principal, credentials, credentialsSalt, realmName)构造器.
   (b)使用ByteSource.Util.bytes()来计算盐值
   (c)盐值需要唯一:一般使用随机数字符串或userid
   (d)使用new SimpleHash(hashAlgorithmName, credentials, salt, hashIterations);

  来计算盐值加密后的密码的值

  注意:使用ByteSource.Util.bytes()来计算盐值

Shiro 密码的加密应用(六).修改ShiroRealm类

Shiro 密码的加密应用(六)

运行:

(1)用户mike/admin,密码aaa登录ok!

 Shiro 密码的加密应用(六)

Shiro 密码的加密应用(六)

(2)用户your,密码aaa登录no!

Shiro 密码的加密应用(六)

Shiro 密码的加密应用(六)



相关文章: