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 是可以实现登录的。
