Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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
Java Android PrivateKey到BouncyCastle PrivateKeyInfo?_Java_Android_Rsa_Bouncycastle_Spongycastle - Fatal编程技术网

Java Android PrivateKey到BouncyCastle PrivateKeyInfo?

Java Android PrivateKey到BouncyCastle PrivateKeyInfo?,java,android,rsa,bouncycastle,spongycastle,Java,Android,Rsa,Bouncycastle,Spongycastle,我试图使用Bouncy/SpongyCastle的OAEP编码来解码一些包装好的数据。但是,用于初始化OAEPEncoding类的SpongyCastle API需要CipherParameters。在我的例子中,我试图使用AndroidPrivateKey打开一些东西,因此我假设我需要以某种方式将密钥转换为AsymmetricKeyParam,并将其粘贴到OAEPEncoding.init函数中。然而,我确实尝试过搜索类似的内容,但大多数示例都显示了通过执行getPrivate().getEn

我试图使用Bouncy/SpongyCastle的OAEP编码来解码一些包装好的数据。但是,用于初始化
OAEPEncoding
类的SpongyCastle API需要
CipherParameters
。在我的例子中,我试图使用Android
PrivateKey
打开一些东西,因此我假设我需要以某种方式将密钥转换为
AsymmetricKeyParam
,并将其粘贴到
OAEPEncoding.init
函数中。然而,我确实尝试过搜索类似的内容,但大多数示例都显示了通过执行
getPrivate().getEncoded()
来初始化它。但是,Android不允许您获取原始私钥,因此我不确定如何实现这一点…

编辑:我使用BC的OAEP类的原因是将OAEP与SHA-256一起使用。存储在Android密钥库中的关键材料不可访问。您可以使用这些键,但无法提取它们。这是一种安全限制
privateKey.getEncoded()
将始终为空,并且您将无法提取参数以使用SpongyCastle创建密钥

请参阅的安全功能

拔牙预防

Android密钥库密钥的密钥材料使用两种安全措施进行保护,以防止提取:

  • 密钥材料永远不会进入应用程序进程。当应用程序使用Android密钥库密钥执行加密操作时,后台明文、密文和要签名或验证的消息将被发送到执行加密操作的系统进程。如果应用程序的进程遭到破坏,攻击者可能能够使用应用程序的密钥,但无法提取其密钥材料(例如,在Android设备之外使用)

如果您想使用OAEP,您需要自己创建并存储密钥,或者将安卓>=23

“安卓私钥”表示您正在使用安卓密钥库生成密钥?是的,密钥位于安卓密钥库中。我只使用常规的Android API就可以将OAEP与SHA-1一起使用,但是,我无法将其与SHA-256一起使用,我现在正在尝试使用BC。是的,我理解这一点,但我认为我的问题实际上是使用BC API。我知道我无法获得原始密钥,我只是通过PrivateKey使用一个引用,但没有一个BC API接受Android PrivateKey。我确实在OAEP和SHA-256中使用了
密码,但是我得到了
javax.crypto.IllegalBlockSizeException,原因是:android.security.KeyStoreException:Unknown error
,这并没有真正的帮助…我使用的代码:
密码=Cipher.getInstance(“RSA/None/OAEPwithSHA-256和mgf1padding”);cipher.init(keyPair.getPrivate());返回cipher.doFinal(包装的_数据)
.doFinal()
上抛出
IllegalBlockSizeException
。这就是重点。不能将Android私钥与bouncycastle一起使用,因为要执行加密操作,它需要访问密钥参数,而实现不允许访问。Android密钥只能与AndroidKeystore加密providerAh一起使用,我明白了。。。在使用Android api时,您有什么想法可以解决异常问题吗?AndroidKeystore api应该可以工作<支持代码>RSA/ECB/OAEPTHESHA-1和MGF1填充
RSA/ECB/OAEPTHESHA-256和MGF1填充
。下面是一个使用SHA256的示例