我正在尝试与 HKDF 实现密钥交换以进行密钥派生。我已经看过HKDF 在 Java Cryptography Architecture 中实现了吗?提出问题 ,但是,我仍然没有得到我应该得到的东西。
在 python 中,我有以下(src):
shared = private_key.exchange(ec.ECDH(), peer_public_key).hex()
derived = HKDF(algorithm=hashes.SHA256(), length=32, salt=b'', info=b'', backend=default_backend()).derive(shared.encode()).hex()
这适用于 python 和 iOS(我也在那里实现了它)。但是,Android 在最后一步给我带来了麻烦。有人可以详细说明适用于 Android 的 HKDF 吗?
编辑:现有的 Kotlin 代码
val keyPairGenerator = KeyPairGenerator.getInstance("EC")
keyPairGenerator.initialize(384)
val keyPair = keyPairGenerator.generateKeyPair()
val peerPublicKey = ... created from external data
val keyAgreement = KeyAgreement.getInstance("ECDH")
keyAgreement.init(keyPair.private)
keyAgreement.doPhase(peerPublicKey, true)
val sharedSecretKey = keyAgreement.generateSecret("ECDH")
谢谢!