Cryptography 将公钥发送到java卡中的主机应用程序

Cryptography 将公钥发送到java卡中的主机应用程序,cryptography,public-key-encryption,javacard,key-pair,Cryptography,Public Key Encryption,Javacard,Key Pair,我是java卡小程序开发新手。我想创建一个应用程序,该应用程序将我发送到公钥,以便将来进行身份验证。对于移动,我使用RSA算法创建公钥和私钥 keys = new KeyPair(KeyPair.ALG_RSA_CRT, KeyBuilder.LENGTH_RSA_2048); keys.genKeyPair(); rsa_publicKey = (RSAPublicKey) keys.getPublic(); 现在我想将公钥发送到我的主机应用程序。我找到了使用

我是java卡小程序开发新手。我想创建一个应用程序,该应用程序将我发送到公钥,以便将来进行身份验证。对于移动,我使用RSA算法创建公钥和私钥

keys = new KeyPair(KeyPair.ALG_RSA_CRT, KeyBuilder.LENGTH_RSA_2048);
        keys.genKeyPair();
        rsa_publicKey = (RSAPublicKey) keys.getPublic();
现在我想将公钥发送到我的主机应用程序。我找到了使用模数和指数将公钥发送到主机应用程序的方法。但我不知道如何实现该方法。请有人帮助我实现将公钥发送到主机应用程序。。 谢谢
SSV

如果您已经拥有RSAPublicKey实例,那么这很容易。这里有一些方法可以得到模数和指数。两个get方法都将请求的值复制到一个字节数组中,您可以在结果APDU中返回该字节数组


请注意,对于没有扩展长度APDU的普通JavaCard,2048位RSA密钥太大,无法在一个响应APDU中返回。根据响应APDU中的可用字节,您甚至可能需要将模数和指数拆分为2个或更多部分,以便将它们返回到主机

+1,但256字节的最大大小应足以一次性发送模数(除非缓冲区大小太小或使用安全通道)。事实上,你还有一点空闲:PThanks.Owlsted和Robert。我使用getmodule和getExponent来完成。我真的会帮助你的评论。对于移动,我有256字节的公钥。我还有一个问题。这就是问题。