Utilizo shiro en la aplicación para la autentificación. Yo uso de contraseñas encriptado con una sal y las guardo en mi base de datos de la siguiente manera:Cómo almacenar y usar una sal de shiro desde la base de datos
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);
}
almaceno la sal con una cuerda en mi base de datos. Ahora en mi reino quiero recuperar mis datos de la base de datos, uso un servicio transaccional para esto. Pero mi sal es un fuerte, así que quiero que gire hacia atrás como tipo ByteSource con el método estático:
ByteSource byteSourceSalt = Util.bytes(salt); //where the salt is a String
Pero cuando creo mi SaltedAuthenticationInfo que no AUTH.
Creo que mi problema es de mi método de conversión:
private String byteArrayToHexString(byte[] bArray){
StringBuffer buffer = new StringBuffer();
for(byte b : bArray) {
buffer.append(Integer.toHexString(b));
buffer.append(" ");
}
return buffer.toString().toUpperCase();
}
Gracias por su ayuda.
cómo puedo obtener la sal pública auto generada por shiro para almacenarla en una columna separada en db – thoitbk