MD5加密可以把密码变成一个字符串,增加密码的隐秘性。但是还有一个问题,就是如果两个密码一样,那么加密出来的字符串也一样。如果想密码一样,加密出来的字符串不一样,可以在MD5加密的基础上,加上盐值。
步骤:
//6.根据用户情况构建AuthenticationInfo对象并返回 ,通常实现类为SimpleAuthenticationInfo
//以下信息是从数据库获取的
/*
* principal:认证的实体信息,可以是username,也可以是实体类对象
* credentials:数据库中获取的密码
* realmName:当前realm对象的name,调用父类的getName()方法即可
*/
//Object principal=username;
//Object credentials="fc1709d0a95a6be30bc5926fdb7f22f4";
//String realmName=getName();
//SimpleAuthenticationInfo info=new SimpleAuthenticationInfo(principal, credentials, realmName);
Object principal=username;
Object credentials=null;//"fc1709d0a95a6be30bc5926fdb7f22f4";
//不同的用户,盐值是不一样的,所以加密后的密码也是不一样的 这里来一个简单的判断
if("admin".equals(username)) {
credentials="038bdaf98f2037b31f1e75b5b4c9b26e";
}else if("user".equals(username)) {
credentials="098d2c478e9c11555ce2823231e02ec1";
}
String realmName=getName();
//4.盐值
ByteSource credentialsSalt=ByteSource.Util.bytes(username);
SimpleAuthenticationInfo info=null;//new SimpleAuthenticationInfo(principal, credentials, realmName);
info=new SimpleAuthenticationInfo(principal, credentials, credentialsSalt,realmName);
return info;
可以看到user和admin的密码是一样的,但是加密后的字符串是不一样的。
用 user 123456 和 admin 123456 是可以实现登录的。