Tôi sử dụng shiro trong ứng dụng để xác thực. Tôi sử dụng mật khẩu băm với muối và tôi lưu trữ chúng trong cơ sở dữ liệu của mình như sau:Làm thế nào để trữ và sử dụng muối của shiro từ cơ sở dữ liệu
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);
}
Tôi lưu trữ muối bằng một chuỗi trong cơ sở dữ liệu của tôi. Bây giờ trong lĩnh vực của tôi, tôi muốn lấy lại dữ liệu của tôi từ cơ sở dữ liệu, tôi sử dụng một dịch vụ transactionnal cho việc này. Nhưng muối của tôi là một mạnh mẽ vì vậy tôi muốn nó quay lưng as type ByteSource với phương pháp tĩnh:
ByteSource byteSourceSalt = Util.bytes(salt); //where the salt is a String
Nhưng khi tôi tạo của tôi SaltedAuthenticationInfo nó không auth.
Tôi nghĩ rằng vấn đề của tôi là từ phương pháp chuyển đổi của tôi:
private String byteArrayToHexString(byte[] bArray){
StringBuffer buffer = new StringBuffer();
for(byte b : bArray) {
buffer.append(Integer.toHexString(b));
buffer.append(" ");
}
return buffer.toString().toUpperCase();
}
Nhờ sự giúp đỡ của bạn.
làm thế nào tôi có thể nhận được tự động muối công cộng được tạo ra bởi shiro để lưu trữ nó vào cột tách trong db – thoitbk