繁体   English   中英

在Android上生成不同的RSA公钥

[英]Different RSA public key generated on Android

我能够在我的Java桌面环境中生成一个公钥,我得到了类似的东西

Sun RSA public key, 1024 bits modulus: 101700973019391285593457598101942678753508114287289699162184623605939671495532511783006850112834969917970271633181351680298749946797462542179729127916916336425952724141383800466274935950042225686754068132826643586090512962724382324158485291344703936377718522573879330753020035687831145457530843148690890911921 public exponent: 65537

但是在Android设备上,当我将密钥作为字符串并使用KeyFactory生成公钥时,我得到了这个:

OpenSSLRSAPublicKey{modulus=90d3b5cefc50dc42828cee8d718876f7573b4c9287dddf808e73cb66266c2004165217f86d0f0192de0bb88b3aac2002303ee8b1c926e9bc54189a5ec5a12bb293df0b3c6ff2458a63098f712f0b72218ce301c38de3971ae8c6c646160a5e2e24dc07679e5a82ada1233ecf5eca3d0d1f483d1c9f059 a23deed537c670b70b1,publicExponent=10001}

钥匙有差异。 我试过SpongyCastle。 我仍然在Android上获得OpenSSL结果。

我错过了什么?

键之间没有差异。 一个以16(十六进制)打印,而另一个以十进制打印。 只需尝试以下代码即可获得保证:

BigInteger bi = new BigInteger(
    "90d3b5cefc50dc42828cee8d718876f7573b4c9287dddf808e73cb66266c2004165217f86d0f0192de0bb88b3aac2002303ee8b1c926e9bc54189a5ec5a12bb293df0b3c6ff2458a63098f712f0b72218ce301c38de3971ae8c6c646160a5e2e24dc07679e5a82ada1233ecf5eca3d0d1f483d1c9f059a23deed537c670b70b1",
    16);
System.out.println(bi.toString(10));

结果将与您的非OpenSSL密钥相同。

这里发生的是您的不同平台具有执行加密操作的不同加密提供程序 结果将是相同的,但会有一些小的特性会被注意到,例如,当调用toString()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM