代码对比
✕ Java 8
SecretKeyFactory factory =
SecretKeyFactory.getInstance(
"PBKDF2WithHmacSHA256");
KeySpec spec = new PBEKeySpec(
password, salt, 10000, 256);
SecretKey key =
factory.generateSecret(spec);
✓ Java 25
var kdf = KDF.getInstance("HKDF-SHA256");
SecretKey key = kdf.deriveKey(
"AES",
KDF.HKDFParameterSpec
.ofExtract()
.addIKM(inputKey)
.addSalt(salt)
.thenExpand(info, 32)
.build()
);
发现此代码有问题? 告诉我们。
为什么现代方式更好
简洁的 API
构建器模式替代笨拙的 KeySpec 构造函数。
标准接口
一致的 API 适用于不同的 KDF 算法。
更少错误
类型安全的构建器减少参数顺序错误的风险。
旧方式
手动 PBKDF2
现代方式
KDF API
自 JDK
25
难度
高级
JDK 支持
密钥派生函数
可用
在 JDK 25 LTS 中正式发布(JEP 510,2025 年 9 月)。
工作原理
KDF API 为密钥派生函数(如 HKDF 和 PBKDF2)提供标准接口。它使用构建器模式替代笨拙的 KeySpec 构造函数,使密钥派生更加清晰且不易出错。
相关文档