我正在开发一个Android应用程序,我需要生成一些RSA私钥和公钥,用于与Web服务进行安全通信。为此,我需要以.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 :(得分:1)
对于其他感兴趣的人,可以在这里找到一个非常好的教程
http://www.codeproject.com/KB/security/porting_java_public_key.aspx?msg=3407475
如果您需要Base64编码/解码,因为它不包含在Android中(至少在API 4中),您可以使用此处的类:iharder.sourceforge.net/current/java/base64 /
答案 1 :(得分:0)
您没有显示类型publicKey
。如果尚未添加,则应转换为RSAPublicKey
,然后使用getPublicExponent()
和getModulus()
方法提取BigInteger。然后简单地使用标准Java IO,e.q。 PrintStream.println()
或printf()
生成XML组件。