Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓5上的EC_Android_Cryptography_Android Keystore_Elliptic Curve - Fatal编程技术网

Android 安卓5上的EC

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密

我在这篇文章中读到:在API级别通过密钥库生成椭圆曲线密钥对EC密钥对与RSA完全不兼容

这些特定曲线只有一种类型的EC关键点(尽管编码时同一点有不同的表示)。ECDH(关键协议)/ECIES和ECDSA的协议也完全相同

因此,如果为
“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)
vs
KeyPairGenerator.getInstance(keyperties.key\u ALGORITHM\u RSA)
带有
设置键类型(“EC”)