2010-09-02 108 views
1

我正在開發一個Android應用程序,我需要生成一些RSA私鑰和公鑰以用於與Web服務的安全通信。要做到這一點,我需要有一個.NET兼容形式的公鑰。 像:Android創建RSA 1024 .NET兼容密鑰

<RSAKeyValue><Modulus>{0}</Modulus><Exponent>{1}</Exponent></RSAKeyValue> 

到目前爲止,我設法給這樣的:

keyGen = KeyPairGenerator.getInstance("RSA"); 
    keyGen.initialize(1024); 
    keypair = keyGen.genKeyPair(); 
    privateKey = keypair.getPrivate(); 
    publicKey = keypair.getPublic(); 

    // Get the bytes of the public and private keys 
    byte[] privateKeyBytes = privateKey.getEncoded(); 
    byte[] publicKeyBytes = publicKey.getEncoded(); 

我有不知道如何繼續。你能否提供一些幫助?

回答

0

您不顯示類型publicKey。如果還沒有,則應將其轉換爲RSAPublicKey,然後使用getPublicExponent()getModulus()方法提取BigInteger。然後只需使用標準的Java IO,e.q. PrintStream.println()printf()來生成XML組件。

+0

要將其序列化爲''(這大概來自XML數字簽名格式),您還需要對數值進行base64編碼從'getPublicExponent()'和'getModulus()'獲得,而不是直接使用'toString()'。 – Bruno 2010-09-03 12:36:46

+0

@布魯諾:謝謝,我對規範並不熟悉,只是猜測{0}和{1}需要什麼。 – 2010-09-03 20:03:42