密码加密
一般在数据库中存储明文的密码是不安全的,一般在项目中都会对密码进行加密密码。加密肯定需要加密算法。加密算法分两大类,一大类是可逆加密,另外一大类不可逆加密。可逆加密分两类,一类是对称加密,另外一类是非对称加密。可逆加密一般都有公钥和私钥,一般对称加密的私钥在客户端和服务器端都是一致的。非对称加密私钥在客户端和服务器端是不一样的。非可逆加密,有一个比较牛的美国人说过,任何加密算法的安全性都要建立在你的源码已经被别人获取的情况下还算安全,那这种加密算法才算成功的。这就是非可逆加密。常用的非可逆加密算法有MD5和SHA1 ,SHA256等等。这些加密算法一般都是采用散列运算来实现的。
/** * 测试非可逆加密算法 */ public class PasswordUtil { public static void main(String[] args) { String str = "123456"; //第一个参数代表加密使用的算法 第二个参数要加密的字符串 第三个参数 加入的盐的值 第四个参数 hash迭代的次数 //以后再保存用户的密码应该使用加密算法加密 SimpleHash simpleHash = new SimpleHash("md5",str,"123",10); String code = simpleHash.toString(); System.out.println("加密后的密文:"+code); } }
密码加密存储之后,在使用shiro做校验的时候,应该在realm中做如下配置:
在自定义的realm中,传入用户密码项对应的盐值: