为什么3是Android platform.key唯一接受的公共指数?
我正在构建一个安卓系统 我有一个现有的密钥对,具有一个公共指数F4(65537) 我尝试将其用作platform.key(我有pk8和x509) 在构建过程中,对我的密钥对调用DumpPublicKey 此时,密钥被拒绝,因为公共指数不是3。(我检查了DumpPublicKey的代码,它就是这样做的:与3比较,否则拒绝) 以下是此项的堆栈跟踪:为什么3是Android platform.key唯一接受的公共指数?,android,rsa,Android,Rsa,我正在构建一个安卓系统 我有一个现有的密钥对,具有一个公共指数F4(65537) 我尝试将其用作platform.key(我有pk8和x509) 在构建过程中,对我的密钥对调用DumpPublicKey 此时,密钥被拒绝,因为公共指数不是3。(我检查了DumpPublicKey的代码,它就是这样做的:与3比较,否则拒绝) 以下是此项的堆栈跟踪: java.lang.Exception: Public exponent should be 3 but is 65537. at com.an
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如此重要
提前感谢对我来说,com.android.dumpkey.DumpPublicKey中似乎有个bug。 将RSA密钥的公共指数限制为3显然是愚蠢的。 这样做只会使实施错误更有可能产生负面影响, 如果基础库没有正确实现 据我所知,Android使用Bouncycastle,这是一个加密库 没有认真执行 像您这样使用标准指数2^16+1是非常合理的,可以避免许多潜在的错误
小指数的问题。使用3而不是65537可以使签名验证速度快8倍。谢谢GregS。这就是我的想法。你现在知道是否有办法让android接受我的密钥吗?对不起,我对android不太了解。我删除了DumpPublicKey中的异常部分,它似乎可以工作(到目前为止)