shiro-realm.ini需要在shiro-realm.ini配置realm注入到securityManager [plain] view plain copy print?
- [main]
- #自定义realm
- customRealm=liuxun.test.shiro.realm.CustomRealm
- #将realm设置到SecurityManager,相当于Spring中的注入
- securityManager.realms=$customRealm
[plain] view plain copy print?
- [main]
- #自定义realm
- customRealm=liuxun.test.shiro.realm.CustomRealm
- #将realm设置到SecurityManager,相当于Spring中的注入
- securityManager.realms=$customRealm
[main]#自定义realmcustomRealm=liuxun.test.shiro.realm.CustomRealm#将realm设置到SecurityManager,相当于Spring中的注入securityManager.realms=$customRealm
测试代码测试代码同入门程序,将ini的地址修改为shiro-realm.ini 分别模拟账号不存在、密码错误、账号和密码正确进行测试
散列算法散列算法一般用于生成一段文本的摘要信息,散列算法不可逆,将内容可以生成摘要,无法将摘要转成原始内容。散列算法常用于对密码进行散列,常用的散列算法有MD5、SHA。
一般散列算法需要提供一个salt(盐)与原始内容生成摘要信息,这样做的目的是为了安全性,比如:111111的md5值是:96e79218965eb72c92a549dd5a330112,拿着“96e79218965eb72c92a549dd5a330112”去md5破解网站很容易进行破解,如果要是对111111和salt(盐,一个随机数)进行散列,这样虽然密码都是111111加不同的盐会生成不同的散列值。
md5散列测试程序[java] view plain copy print? package liuxun.test.shiro.authentication;
import org.apache.shiro.crypto.hash.Md5Hash;
import org.apache.shiro.crypto.hash.SimpleHash;
public class MD5Test {
public static void main(String[] args) {
//原始密码
String source = "123456";
//盐
String salt = "qwerty";
//散列次数
int hashIterations = 2;
//上边散列1次:48474f975022f960bc2afbe49be581e8
//上边散列2次:13f79dafcbbedc313273e2b891ac84d3
//构造方法中:
//第一个参数:明文,原始密码
//第二个参数:盐,通过使用随机字符串
//第三个参数:散列的次数,比如散列两次,相当于md5(md5(''))
Md5Hash md5Hash = new Md5Hash(source, salt, hashIterations);
String password_md5 = md5Hash.toString();
System.out.println(password_md5);
//使用后SimpleHash
//第一个参数:散列算法
SimpleHash simpleHash = new SimpleHash("md5", source, salt, hashIterations);
System.out.println(simpleHash.toString());
}
} [java] view plain copy print?
- package liuxun.test.shiro.authentication;
-
- import org.apache.shiro.crypto.hash.Md5Hash;
- import org.apache.shiro.crypto.hash.SimpleHash;
-
- public class MD5Test {
- public static void main(String[] args) {
- //原始密码
- String source = "123456";
- //盐
- String salt = "qwerty";
- //散列次数
- int hashIterations = 2;
- //上边散列1次:48474f975022f960bc2afbe49be581e8
- //上边散列2次:13f79dafcbbedc313273e2b891ac84d3
-
- //构造方法中:
- //第一个参数:明文,原始密码
- //第二个参数:盐,通过使用随机字符串
- //第三个参数:散列的次数,比如散列两次,相当于md5(md5(''))
- Md5Hash md5Hash = new Md5Hash(source, salt, hashIterations);
-
- String password_md5 = md5Hash.toString();
- System.out.println(password_md5);
-
- //使用后SimpleHash
- //第一个参数:散列算法
- SimpleHash simpleHash = new SimpleHash("md5", source, salt, hashIterations);
- System.out.println(simpleHash.toString());
- }
- }
建议对MD5进行散列时加salt(盐),相当于对原始密码+盐进行散列 正常使用时散列算法: 在程序中对"原始密码+盐"进行散列,将散列值存储到数据库中,并且还要将盐存储在数据库中,如果进行密码比对时,使用相同方法,将原始密码+盐进行散列,进行比对。
点击下方标题查看相关学习资料
|