我在寫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