我正在建立一个Android系统。
我有一个现有密钥对,公共指数为F4(65537)。
我尝试将它用作platform.key(我有pk8和x509)。
在构建过程中,在我的密钥对上调用DumpPublicKey。
此时,密钥被拒绝,因为公共指数不是3.(我检查了DumpPublicKey的代码,它正是它的作用:与3比较,否则拒绝)
这是堆栈跟踪:
java.lang.Exception: Public exponent should be 3 but is 65537.
at com.android.dumpkey.DumpPublicKey.check(DumpPublicKey.java:75)
at com.android.dumpkey.DumpPublicKey.main(DumpPublicKey.java:151)
这是否意味着我必须使用
生成新密钥对openssl genrsa -3 ...
还是有什么办法可以继续使用我的钥匙?
另外,为什么公共指数是3而不是F4是如此重要?
提前致谢
答案 0 :(得分:1)
看起来像com.android.dumpkey.DumpPublicKey中的一个错误。 将RSA密钥的公共指数限制为3只是非常愚蠢。 这样做只会使实现错误更有可能产生灾难性后果, 如果底层库未正确实现。
据我所知,Android使用的是Bouncycastle,它是一个加密库 没有仔细实施。
使用标准指数2 ^ 16 + 1,非常合理,避免了很多潜力 小指数的问题。