我在写Java Applet。我需要使用APDU命令将预生成的RSAPrivateCrtKey
上载到小程序。APDU命令中的负数
在我的电脑中,我正在生成密钥。接下来我序列此键privateKeyBuffer
:
keyPair = new KeyPair(KeyPair.ALG_RSA_CRT, KeyBuilder.LENGTH_RSA_512);
keyPair.genKeyPair();
rsaPrivateKey = (RSAPrivateCrtKey) keyPair.getPrivate();
byte[] privateKeyBuffer = new byte[165];
short lengthDP1 = rsaPrivateKey.getDP1(privateKeyBuffer, 0);
offset += lengthDP1;
short lengthDQ1 = rsaPrivateKey.getDQ1(privateKeyBuffer, offset);
offset += lengthDQ1;
short lengthP = rsaPrivateKey.getP(privateKeyBuffer, offset);
offset += lengthP;
short lengthQ = rsaPrivateKey.getQ(privateKeyBuffer, offset);
offset += lengthQ;
short lengthPQ = rsaPrivateKey.getPQ(privateKeyBuffer, offset);
产生缓冲,我应该每个数组元素转换为十六进制,然后用APDU发送和上次在小程序恢复我的私钥后,但在privateKeyBuffer
我们有负数:
37,65,-96,-110,38,6,-2,73,-37,28,120,-90... (etc)
我应该如何将它们转换为十六进制并保持APDU正确(因为我知道只有正数允许),或者可能有另一种方法将按键推送到JavaCard?
任何想法?
你似乎提供Java卡代码,而你是在告诉我们,“在我的电脑我生成的关键。” **您在哪里生成密钥对,智能卡或电脑?**请根据情况更新您的问题和标题。 –
在这个例子中,我在我的电脑中生成了密钥,然后在apdu命令中发送密钥到卡 – raiym
因为我的卡不支持RSA – raiym