認証用のアプリケーションで shiro を使用します。私はソルトでハッシュ化されたパスワードを使用し、次のようにデータベースに保存します。
private User createUserWithHashedPassword(String inName, String inFirstName, String inLastName, String inPassword){
ByteSource salt = randomNumberGenerator.nextBytes(32);
byte[] byteTabSalt = salt.getBytes();
String strSalt = byteArrayToHexString(byteTabSalt);
String hashedPasswordBase64 = new Sha256Hash(inPassword, salt, 1024).toBase64();
return new User(inName,inFirstName,inLastName,hashedPasswordBase64,strSalt);
}
データベースに塩を文字列で保存します。私の領域では、データベースからデータを取得したいと考えています。これにはトランザクション サービスを使用します。しかし、私のソルトはストロングなので、静的メソッドを使用して ByteSource タイプに戻す必要があります。
ByteSource byteSourceSalt = Util.bytes(salt); //where the salt is a String
しかし、SaltedAuthenticationInfo を作成すると、認証されません。
私の問題は convert メソッドにあると思います:
private String byteArrayToHexString(byte[] bArray){
StringBuffer buffer = new StringBuffer();
for(byte b : bArray) {
buffer.append(Integer.toHexString(b));
buffer.append(" ");
}
return buffer.toString().toUpperCase();
}
ご協力いただきありがとうございます。