dvl*_*dvl 8 java xml encryption rsa key
我在Java中成功运行RSA加密/解密.这就是我生成密钥的方式.
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(path));
KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
kpg.initialize(1024);
KeyPair keypair = kpg.generateKeyPair();
oos.writeObject(keypair);
Run Code Online (Sandbox Code Playgroud)
但现在我需要将我的系统与.Net代码集成.是否可以按以下格式将此KeyPair对象导出为XML(因为.Net代码只能接受XML格式的密钥):
<RSAKeyValue>
<Modulus>.....</Modulus>
<Exponent>......</Exponent>
<P>.....</P>
<Q>....</Q>
<DP>.......</DP>
<DQ>......</DQ>
<InverseQ>.........</InverseQ>
<D>........</D>
</RSAKeyValue>
Run Code Online (Sandbox Code Playgroud)
Tho*_*nin 15
试试这个:
// key pair is in 'kp'
KeyFactory kf = KeyFactory.getInstance("RSA");
RSAPrivateCrtKeySpec ks = kf.getKeySpec(
kp.getPrivate(), RSAPrivateCrtKeySpec.class);
System.out.println("<RSAKeyValue>");
System.out.println(" <Modulus>" + ks.getModulus() + "</Modulus>");
System.out.println(" <Exponent>" + ks.getPublicExponent() + "</Exponent>");
System.out.println(" <P>" + ks.getPrimeP() + "</P>");
System.out.println(" <Q>" + ks.getPrimeQ() + "</Q>");
System.out.println(" <DP>" + ks.getPrimeExponentP() + "</DP>");
System.out.println(" <DQ>" + ks.getPrimeExponentQ() + "</DQ>");
System.out.println(" <InverseQ>" + ks.getCrtCoefficient() + "</InverseQ>");
System.out.println(" <D>" + ks.getPrivateExponent() + "</D>");
System.out.println("</RSAKeyValue>");
Run Code Online (Sandbox Code Playgroud)
这适用于内部使用"CRT"表示的所有RSA密钥对,并允许导出; 这是JDK默认使用您显示的代码生成的密钥对的情况.
(这里我打印出密钥System.out而不是将其写入文件,但你明白了.)