跟我学Shiro - 张开涛JdbcRealm:通过 sql 查询相应的信息,如“select password from users where username = ?”获取用户密码,“select password, password_salt from users where username = ?”获取用户密码及盐;“select role_name from user_roles where username = ?” 获取用户角色;“select 数组/String 之间转换。 散列算法 散列算法一般用于生成数据的摘要信息,是一种不可逆的算法,一般适合存储密码之类的 数据,常见的散列算法如 MD5、SHA 等。一般进行散列时最好提供一个 salt(盐),比如 加密密码“admin”,产生的散列值是“21232f297a57a5a743894a0e4a801fc3”,可以到一 些 md5 解密网站很容易的通过散列值得到密码“admin”,即如果直接对密码进行散列相 42 如上代码通过盐“123”MD5 散列“hello”。另外散列时还可以指定散列次数,如 2 次表 示:md5(md5(str)):“new Md5Hash(str, salt, 2).toString()”。 使用 SHA256 算法生成相应的散列数据,另外还有如 SHA1、SHA512 算法。 Shiro 还提供了通用的散列支持:0 码力 | 219 页 | 4.16 MB | 10 月前3
Apache Shiro参考手册中文版as a salt or not // //Note that a normal app would reference an attribute rather //than create a new RNG every time: RandomNumberGenerator rng = new SecureRandomNumberGenerator(); Object salt = rng password with the random salt and multiple //iterations and then Base64-encode the value (requires less space than Hex): String hashedPasswordBase64 = new Sha256Hash(plainTextPassword, salt, 1024).toBase64(); hashedPasswordBase64); //save the salt with the new account . The HashedCredentialsMatcher //will need it later when handling login attempts: user.setPasswordSalt(salt); userDAO.create(user); 既然你使用0 码力 | 92 页 | 1.16 MB | 1 年前3
Apache Shiro 1.2.x Reference Manual 中文翻译SecureRandomNumberGenerator(); Object salt = rng.nextBytes(); //我们的纯文本密码经过散列随机盐和多次迭代, //得到Base64编码的值(比Hex需要较少的空间): String hashedPasswordBase64 = new Sha256Hash(plainTextPassword, salt, 1024).toBase64(); User user //稍后再的登录尝试的时候会处理它: user.setPasswordSalt(salt); userDAO.create(user); 由于你使用 SHA-256 加密你的密码,你需要告诉 Shiro 使用相应的 HashedCredentialsMatcher 来检查你的 hashing 值,在这个例子中,我们为了加强安全创建 了一个随机的 salt 并且执行 1024 Hash 迭代(查看HashedCredentialsMatcher fo,SaltedAuthenticationInfo 接 口确保你在创建用户帐户时使用的salt(如上面调用的 user.setPasswordSalt(salt);)能被 HashedCredentialsMatcher 引用。 HashedCredentialsMatcher 需要使用 salt 来对提交的 AuthenticationToken 执行相同的 hashing 技术来对0 码力 | 196 页 | 2.34 MB | 1 年前3
Hello 算法 1.0.0b4 Java版,但它的内存地址不变,哈希值仍然是不变的。 细心的你可能发现在不同控制台中运行程序时,输出的哈希值是不同的。这是因为 Python 解释器在每次启 动时,都会为字符串哈希函数加入一个随机的盐(Salt)值。这种做法可以有效防止 HashDoS 攻击,提升 哈希算法的安全性。 6.4. 小结 ‧ 输入 key ,哈希表能够在 ?(1) 时间内查询到 value ,效率非常高。 ‧ 常见的0 码力 | 342 页 | 27.39 MB | 1 年前3
Hello 算法 1.1.0 Java版,但它的内存地址不变,哈希值仍然是不变的。 细心的你可能发现在不同控制台中运行程序时,输出的哈希值是不同的。这是因为 Python 解释器在每次启 动时,都会为字符串哈希函数加入一个随机的盐(salt)值。这种做法可以有效防止 HashDoS 攻击,提升哈 希算法的安全性。 6.4 小结 1. 重点回顾 ‧ 输入 key ,哈希表能够在 ?(1) 时间内查询到 value ,效率非常高。0 码力 | 378 页 | 18.47 MB | 1 年前3
Hello 算法 1.0.0b5 Java版,但它的内存地址不变,哈希值仍然是不变的。 细心的你可能发现在不同控制台中运行程序时,输出的哈希值是不同的。这是因为 Python 解释器在每次启 动时,都会为字符串哈希函数加入一个随机的盐(Salt)值。这种做法可以有效防止 HashDoS 攻击,提升 哈希算法的安全性。 6.4 小结 1. 重点回顾 ‧ 输入 key ,哈希表能够在 ?(1) 时间内查询到 value ,效率非常高。0 码力 | 376 页 | 30.69 MB | 1 年前3
Hello 算法 1.0.0 Java版,但它的内存地址不变,哈希值仍然是不变的。 细心的你可能发现在不同控制台中运行程序时,输出的哈希值是不同的。这是因为 Python 解释器在每次启 动时,都会为字符串哈希函数加入一个随机的盐(salt)值。这种做法可以有效防止 HashDoS 攻击,提升哈 希算法的安全性。 6.4 小结 1. 重点回顾 ‧ 输入 key ,哈希表能够在 ?(1) 时间内查询到 value ,效率非常高。0 码力 | 376 页 | 17.59 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Java 版,但它的内存地址不变,哈希值仍然是不变的。 细心的你可能发现在不同控制台中运行程序时,输出的哈希值是不同的。这是因为 Python 解释器在每次启 动时,都会为字符串哈希函数加入一个随机的盐(salt)值。这种做法可以有效防止 HashDoS 攻击,提升哈 希算法的安全性。 6.4 小结 1. 重点回顾 ‧ 输入 key ,哈希表能够在 ?(1) 时间内查询到 value ,效率非常高。0 码力 | 379 页 | 18.48 MB | 10 月前3
Hello 算法 1.2.0 繁体中文 Java 版,但它的記憶體位址不變,雜湊值仍然是不變的。 細心的你可能發現在不同控制檯中執行程式時,輸出的雜湊值是不同的。這是因為 Python 直譯器在每次啟 動時,都會為字串雜湊函式加入一個隨機的鹽(salt)值。這種做法可以有效防止 HashDoS 攻擊,提升雜湊 演算法的安全性。 6.4 小結 1. 重點回顧 ‧ 輸入 key ,雜湊表能夠在 ?(1) 時間內查詢到 value ,效率非常高。0 码力 | 379 页 | 18.79 MB | 10 月前3
Spring Framework 2.0.8 Referenceany migration from Spring 1.2.x to Spring 2.0. Feel free to take this next statement with a pinch of salt, but upgrading to Spring 2.0 from a Spring 1.2 application should simply be a matter of dropping the0 码力 | 502 页 | 3.61 MB | 1 年前3
共 18 条
- 1
- 2













