到目前为止,我已经成功地在充气城堡的轻量级 API 中生成了 ECDHE 对。但是,我在尝试从 byte[] 重新创建公钥时遇到问题。
由于 ECPublicKeyParameters 对象只有一种方法 getQ(),我假设这就是重建 key 所需的全部方法。使用的曲线(P-521)等其他参数保持不变。
我正在做以下事情:
AsymmetricCipherKeyPair kp = kpgen.generateKeyPair(); //ECDHE Key Generator
ECPublicKeyParameters pubKey = (ECPublicKeyParameters)kp.getPublic();
byte[] aPubKeybytes = pubKey.getQ().getEncoded(false); //Should I set to true or false?
除非有另一种方法来获取公钥 pubKey 的原始字节,否则我看不到不调用返回 ECPoint 对象的方法 getQ() 来获取字节的方法。
我的问题是如何使用充气城堡的轻量级 API 将 byte[] 重构为 ECPoint 对象。或者,更好的是,如何使用以某种方式从原始 pubKey 对象派生的字节数组重建整个 ECPublicKeyParameter 对象。
最佳答案
对于可能涉及的任何人,我通过使用 PublicKeyFactory 和 SubjectPublicKeyInfoFactory 对 key 进行编码和解码来解决了这个问题。
使用:
byte[] key = SubjectPublicKeyInfoFactory.createSubjectPublicKeyInfo(pubKey).getEncoded();
我能够获取 key 的原始字节。
并使用:
ECPublicKeyParameters bpubKey = (ECPublicKeyParameters)PublicKeyFactory.createKey(key);
我能够重新创建公钥。
关于java - 从 Bouncy CaSTLe 中的 byte[] 获取 ECPoint/ECPublicKeyParameters,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19605954/