HKDFBytesGenerator 的 Bouncycastle C# 等价物?
Bouncycastle C# equivalent for HKDFBytesGenerator?
我一直在寻找将示例 Java Android 支付处理代码翻译成 C# 的方法。示例 Java 代码可在此处找到:https://developers.google.com/android-pay/integration/gateway-processor-integration
通过 BouncyCastle 的 C# 文档进行解析,我找到了与大多数 Java BouncyCastle 代码等效的代码。但是,我找不到 HKDFBytesGenerator 和 HKDFParameters 作为 C# 库的一部分,并且 BaseKDFBytesGenerator 不会生成正确的 encryptionKey 和 macKey。
有人知道 BouncyCastle C# 库中正确的 HKDF 替换吗?或者如果它不存在,如何用 .NET 的内置密码库或其他 .NET 密码库替换它?
编辑:供参考,我苦苦挣扎的代码在这里:
// Deriving encryption and mac keys.
HKDFBytesGenerator hkdfBytesGenerator = new HKDFBytesGenerator(new SHA256Digest());
byte[] khdfInput = ByteUtils.concatenate(ephemeralPublicKeyBytes, sharedSecret);
hkdfBytesGenerator.init(new HKDFParameters(khdfInput, HKDF_SALT, HKDF_INFO));
byte[] encryptionKey = new byte[SYMMETRIC_KEY_BYTE_COUNT];
hkdfBytesGenerator.generateBytes(encryptionKey, 0, SYMMETRIC_KEY_BYTE_COUNT);
byte[] macKey = new byte[MAC_KEY_BYTE_COUNT];
hkdfBytesGenerator.generateBytes(macKey, 0, MAC_KEY_BYTE_COUNT);
在进一步研究外部库后,我发现 CEX-NET 有一个很棒的 HKDF class 基于 BouncyCastle 的 1.51 Java 实现。该库能够处理获取正确的 encryptionKey 和 macKey 的步骤。 Link: http://web.ncf.ca/fq329/CEX/Help/class_v_t_dev_1_1_libraries_1_1_c_e_x_engine_1_1_crypto_1_1_generator_1_1_h_k_d_f.html#details
我一直在寻找将示例 Java Android 支付处理代码翻译成 C# 的方法。示例 Java 代码可在此处找到:https://developers.google.com/android-pay/integration/gateway-processor-integration
通过 BouncyCastle 的 C# 文档进行解析,我找到了与大多数 Java BouncyCastle 代码等效的代码。但是,我找不到 HKDFBytesGenerator 和 HKDFParameters 作为 C# 库的一部分,并且 BaseKDFBytesGenerator 不会生成正确的 encryptionKey 和 macKey。
有人知道 BouncyCastle C# 库中正确的 HKDF 替换吗?或者如果它不存在,如何用 .NET 的内置密码库或其他 .NET 密码库替换它?
编辑:供参考,我苦苦挣扎的代码在这里:
// Deriving encryption and mac keys.
HKDFBytesGenerator hkdfBytesGenerator = new HKDFBytesGenerator(new SHA256Digest());
byte[] khdfInput = ByteUtils.concatenate(ephemeralPublicKeyBytes, sharedSecret);
hkdfBytesGenerator.init(new HKDFParameters(khdfInput, HKDF_SALT, HKDF_INFO));
byte[] encryptionKey = new byte[SYMMETRIC_KEY_BYTE_COUNT];
hkdfBytesGenerator.generateBytes(encryptionKey, 0, SYMMETRIC_KEY_BYTE_COUNT);
byte[] macKey = new byte[MAC_KEY_BYTE_COUNT];
hkdfBytesGenerator.generateBytes(macKey, 0, MAC_KEY_BYTE_COUNT);
在进一步研究外部库后,我发现 CEX-NET 有一个很棒的 HKDF class 基于 BouncyCastle 的 1.51 Java 实现。该库能够处理获取正确的 encryptionKey 和 macKey 的步骤。 Link: http://web.ncf.ca/fq329/CEX/Help/class_v_t_dev_1_1_libraries_1_1_c_e_x_engine_1_1_crypto_1_1_generator_1_1_h_k_d_f.html#details