Android 安卓5上的EC
我在这篇文章中读到:在API级别通过密钥库生成椭圆曲线密钥对EC密钥对与RSA完全不兼容 这些特定曲线只有一种类型的EC关键点(尽管编码时同一点有不同的表示)。ECDH(关键协议)/ECIES和ECDSA的协议也完全相同 因此,如果为Android 安卓5上的EC,android,cryptography,android-keystore,elliptic-curve,Android,Cryptography,Android Keystore,Elliptic Curve,我在这篇文章中读到:在API级别通过密钥库生成椭圆曲线密钥对EC密钥对与RSA完全不兼容 这些特定曲线只有一种类型的EC关键点(尽管编码时同一点有不同的表示)。ECDH(关键协议)/ECIES和ECDSA的协议也完全相同 因此,如果为“RSA”密钥对生成器生成了EC密钥,您可以非常确定它在规格上与为“EC”生成的密钥相同。通过执行EC签名生成/验证或(稍微复杂一点的)密钥协议进行简单测试 您可以通过创建自己的确定性SecureRandom实现进行测试,并要求EC实现使用该实现。这也是因为EC密
“RSA”
密钥对生成器生成了EC密钥,您可以非常确定它在规格上与为“EC”
生成的密钥相同。通过执行EC签名生成/验证或(稍微复杂一点的)密钥协议进行简单测试
您可以通过创建自己的确定性
SecureRandom
实现进行测试,并要求EC实现使用该实现。这也是因为EC密钥对生成没有RSA密钥对生成器那么多选择,所以算法实现可能是相同的。因此,如果您从相同的值开始,那么它很可能会生成相同的密钥对。然后,您可以比较公钥值或使用一个公钥验证来自另一个私钥的签名
如果Android key store无法处理,则底层实现可能会忽略给定的SecureRandom
我这里没有这些Android版本
注意,生成EC密钥的给定方法可以被认为是一种黑客行为。由于安卓5/API22是5年前的版本,你可以问问自己是否仍然支持这些版本
或者,您也可以使用Bouncy Castle在软件中完全生成EC密钥对,但Android密钥存储不涉及密钥安全。
KeyPairGenerator.getInstance(KeyProperties.key\u ALGORITHM\u EC)
vsKeyPairGenerator.getInstance(keyperties.key\u ALGORITHM\u RSA)
带有设置键类型(“EC”)