我正在嘗試使用Shiro JdbcRealm和SHA256 hashedcredentialsMatcher。我需要更新遺留數據庫併爲每個用戶分配適當的salt(通過批處理例程)。如何獲取/設置JdbcRealm的鹽
如何使用Shiro框架爲特定帳戶獲取/設置鹽?
我正在嘗試使用Shiro JdbcRealm和SHA256 hashedcredentialsMatcher。我需要更新遺留數據庫併爲每個用戶分配適當的salt(通過批處理例程)。如何獲取/設置JdbcRealm的鹽
如何使用Shiro框架爲特定帳戶獲取/設置鹽?
隨着四郎1.2.3所有你需要做的是:
擴展JdbcRealm並設置鹽風格。
public class JdbcSaltRealm extends JdbcRealm { public JdbcSaltRealm() { setSaltStyle(SaltStyle.COLUMN); } }
更新shiro.ini使用擴展領域,並從DB
credentialsMatcher = org.apache.shiro.authc.credential.HashedCredentialsMatcher credentialsMatcher.hashAlgorithmName = SHA-256 jdbcRealm = com.mypackage.JdbcSaltRealm jdbcRealm.authenticationQuery = SELECT password, salt FROM user WHERE username = ? jdbcRealm.credentialsMatcher = $credentialsMatcher
哈希&鹽電流/新用戶的密碼。這應該爲所有現有用戶以及新用戶註冊完成。
private void saltHashPassword(String password) {}String salt = new BigInteger(250, new SecureRandom()).toString(32); //TODO: save salt value to "salt" column in user table Sha256Hash hash = new Sha256Hash(password, (new SimpleByteSource(salt)).getBytes()); String saltedHashedPassword = hash.toHex(); //TODO: save saltedHashedPassword value to "password" column in user table
我希望我的回答是明確的和可以理解的。
這工作得很好。謝謝。 – 2017-01-01 16:32:03