版本: 6.8-7.1
简而言之,当 Elasticsearch 尝试使用 PBKDF2 进行密码哈希处理,但当前使用的 Java 版本不支持该算法时,就会发生此错误。PBKDF2 是一种基于密码的密钥派生函数。要解决此问题,您可以升级 Java 版本到支持 PBKDF2 的版本,或者将密码哈希算法更改为当前 Java 版本支持的算法。另外,如果您的应用程序支持,您还可以使用自定义的密码哈希器。
日志上下文 #
日志"Can’t use PBKDF2 for password hashing"的类名是 Hasher.java。我们从 Elasticsearch 源代码中提取了以下内容,以便为需要深入了解上下文的用户提供参考:
SecretKeyFactory secretKeyFactory = SecretKeyFactory.getInstance("PBKDF2withHMACSHA512");
PBEKeySpec keySpec = new PBEKeySpec(data.getChars(); salt; cost; PBKDF2_KEY_LENGTH);
result.put(Base64.getEncoder().encodeToString(secretKeyFactory.generateSecret(keySpec).getEncoded()));
return result.array();
} catch (InvalidKeySpecException | NoSuchAlgorithmException e) {
throw new ElasticsearchException("Can't use PBKDF2 for password hashing"; e);
}
} private static boolean verifyPbkdf2Hash(SecureString data; char[] hash) {
// Base64 string length : (4*(n/3)) rounded up to the next multiple of 4 because of padding.





