- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我能够在我的 Java 桌面环境中生成一个公钥,我得到了这样的东西
Sun RSA public key, 1024 bits modulus: 101700973019391285593457598101942678753508114287289699162184623605939671495532511783006850112834969917970271633181351680298749946797462542179729127916916336425952724141383800466274935950042225686754068132826643586090512962724382324158485291344703936377718522573879330753020035687831145457530843148690890911921 public exponent: 65537
但是在 Android 设备上,当我将 key 作为字符串获取并使用 KeyFactory
生成公钥时,我得到了这个:
OpenSSLRSAPublicKey{modulus=90d3b5cefc50dc42828cee8d718876f7573b4c9287dddf808e73cb66266c2004165217f86d0f0192de0bb88b3aac2002303ee8b1c926e9bc54189a5ec5a12bb293df0b3c6ff2458a63098f712f0b72218ce301c38de3971ae8c6c646160a5e2e24dc07679e5a82ada1233ecf5eca3d0d1f483d1c9f059
a23deed537c670b70b1,publicExponent=10001}
按键不一致。我试过 SpongyCaSTLe。我仍然在 Android 上获得 OpenSSL 结果。
我错过了什么?
最佳答案
key 之间没有差异。一个以 base-16(十六进制)打印,而另一个以十进制打印。只需尝试以下代码以确保安全:
BigInteger bi = new BigInteger(
"90d3b5cefc50dc42828cee8d718876f7573b4c9287dddf808e73cb66266c2004165217f86d0f0192de0bb88b3aac2002303ee8b1c926e9bc54189a5ec5a12bb293df0b3c6ff2458a63098f712f0b72218ce301c38de3971ae8c6c646160a5e2e24dc07679e5a82ada1233ecf5eca3d0d1f483d1c9f059a23deed537c670b70b1",
16);
System.out.println(bi.toString(10));
结果将与您的非 OpenSSL key 相同。
此处发生的情况是,您的不同平台具有执行加密操作的不同加密提供程序。结果将是相同的,但会有一些小的特性会被注意到,例如,在调用 toString()
时。
关于java - Android 上生成的不同 RSA 公钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18916024/
我是一名优秀的程序员,十分优秀!