You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bouncy Castle FIPS库中使用带salt和info的HKDF算法?

在Bouncy Castle FIPS库中实现完整HKDF流程(含salt和info参数)

Bouncy Castle FIPS版本将HKDF的**提取(Extract)和扩展(Expand)**步骤拆分为独立操作,要同时传入salt和info完成完整流程,需要分两步执行:

步骤1:执行提取操作生成伪随机密钥(PRK)

使用HKDFKeyBuilder完成提取,传入输入密钥和salt参数:

// 指定符合FIPS要求的哈希算法(这里用SHA-256)
HKDFKeyBuilder hkdfKeyBuilder = new HKDFKeyBuilder(NISTObjectIdentifiers.id_hkdf_with_sha256);
hkdfKeyBuilder.setSalt(salt); // 设置salt参数
hkdfKeyBuilder.setKey(inputKey); // 设置原始输入密钥
SecretKey prk = hkdfKeyBuilder.build(); // 生成伪随机密钥PRK

步骤2:执行扩展操作生成最终密钥

使用HKDFBytesGenerator基于PRK和info参数完成扩展:

HKDFBytesGenerator hkdfGenerator = new HKDFBytesGenerator(new SHA256Digest());
// 初始化时传入PRK和info,salt设为null(提取步骤已处理salt)
HKDFParameters params = new HKDFParameters(prk.getEncoded(), null, info);
hkdfGenerator.init(params);

byte[] finalKey = new byte[32]; // 指定生成密钥的长度
hkdfGenerator.generateBytes(finalKey, 0, 32);

关键说明

  • FIPS版拆分HKDF步骤是为了符合密码模块合规性要求,确保每个操作的可审计性。
  • salt用于增强密钥随机性,info用于区分不同业务场景的密钥派生(实现密钥隔离)。
  • 若salt为null,HKDF会自动使用与哈希算法输出长度相同的全0字节作为默认salt;info为null时则使用空字节数组,完全符合HKDF标准规范。

内容的提问来源于stack exchange,提问作者Eugen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 03:44:58