2

如何在 Java Card 上对 ECDSA PublicKey 进行编码,以便我可以在另一个平台上对其进行解码(例如,在响应 APDU 中发送编码的密钥并在标准 Java 应用程序中处理它)?keyPair.getPublic().getEncoded()在 Java 上使用 PKCS#8 编码可以解决问题,但据我所知getEncoded(),在 Java Card 平台上不可用。

4

2 回答 2

4

您可以像这样实现此功能:

卡面:

  • 1 KeyPair.getPublicKey() --> publicKey;
  • 2 publicKey.getW() --> W;
  • 3 向外部发送W;

标准java应用端:

  • 1 得到 W 个数据字节;
  • 2 W 数据字节 --> ECPoint;
  • 3 使用在步骤 2 中生成的 ECPoint 使用 ECPublicKeySpec 类构建 PublicKey;
  • 4 在您的应用程序中使用公钥;
于 2015-05-21T07:22:56.877 回答
1

getEncoded()方法以其主要编码格式返回密钥,如果密钥不支持编码,则返回 null。所以你不需要将它用于你的目标。您只需使用向下转换即可ECPublicKey

ECPublicKey pubKey = (ECPublicKey) keyPair.getPublic()

pubKey一行中的,等同getEncoded()于 Java 应用程序中方法的输出。

于 2015-05-21T02:30:31.220 回答