Как хранить и использовать соль Широ из базы данных
Я использую Широ в приложении для аутентификации. Я использую хешированный пароль с солью и храню их в своей базе данных следующим образом:
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);
}
Я храню соль со строкой в моей базе данных. Теперь в моем мире я хочу получить свои данные из базы данных, для этого я использую транзакционный сервис. Но моя соль - Strong, поэтому я хочу, чтобы она превратилась в тип ByteSource со статическим методом:
ByteSource byteSourceSalt = Util.bytes(salt); //where the salt is a String
Но когда я создаю свой SaltedAuthenticationInfo, он не авторизуется.
Я думаю, что моя проблема в моем методе конвертации:
private String byteArrayToHexString(byte[] bArray){
StringBuffer buffer = new StringBuffer();
for(byte b : bArray) {
buffer.append(Integer.toHexString(b));
buffer.append(" ");
}
return buffer.toString().toUpperCase();
}
Спасибо за вашу помощь.