Назад к вопросам
Junior — Middle
68
Используете ли вы криптографические методы для хеширования паролей в Java Security?
Ответ от нейросети
sobes.tech AI
В Java Security для хеширования паролей рекомендуется использовать криптографически стойкие алгоритмы с солью и итерациями, например, PBKDF2, bcrypt или scrypt. Простое использование MessageDigest (например, SHA-256) без соли и итераций не обеспечивает достаточную защиту.
Пример использования PBKDF2 с Java стандартными средствами:
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.PBEKeySpec;
import java.security.SecureRandom;
import java.util.Base64;
public class PasswordHasher {
private static final int ITERATIONS = 65536;
private static final int KEY_LENGTH = 256;
public static String hashPassword(char[] password, byte[] salt) throws Exception {
PBEKeySpec spec = new PBEKeySpec(password, salt, ITERATIONS, KEY_LENGTH);
SecretKeyFactory skf = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256");
byte[] hash = skf.generateSecret(spec).getEncoded();
return Base64.getEncoder().encodeToString(hash);
}
public static byte[] getSalt() {
SecureRandom sr = new SecureRandom();
byte[] salt = new byte[16];
sr.nextBytes(salt);
return salt;
}
}
Таким образом, да — криптографические методы используются, но важно применять их правильно, с солью и достаточным числом итераций.