我正在尝试使用 Bouncy/SpongyCastle 的 OAEP 编码来解码一些包装数据。但是,用于初始化类的 SpongyCastle APIOAEPEncoding
需要CipherParameters
. 就我而言,我正在尝试使用 Android 解包某些东西PrivateKey
,所以我假设我需要以某种方式将密钥转换为AsymmetricKeyParam
并将其粘贴在OAEPEncoding.init
函数中。但是,我确实尝试过寻找类似的东西,但大多数示例都显示通过执行getPrivate().getEncoded()
. 但是,Android 不允许您获取原始私钥,所以我不确定如何处理这个...
编辑:我使用 BC 的 OAEP 类的原因是将 OAEP 与 SHA-256 一起使用
问问题
807 次
1 回答
3
无法访问存储在 Android Keystore 中的密钥材料。您可以使用密钥,但不能提取它们。这是一个安全限制。privateKey.getEncoded()
将始终为空,您将无法提取参数以使用 SpongyCastle 创建密钥。
请参阅Android 密钥库的安全功能
提取预防
使用两种安全措施保护 Android Keystore 密钥的密钥材料不被提取:
- 密钥材料永远不会进入申请流程。当应用程序使用 Android Keystore 密钥执行加密操作时,在后台将要签名或验证的明文、密文和消息馈送到执行加密操作的系统进程。如果应用程序的进程受到破坏,攻击者可能能够使用应用程序的密钥,但无法提取其密钥材料(例如,在 Android 设备之外使用)。
如果您想使用 OAEP,您需要自己创建和存储密钥或以 Android>=23 为目标
于 2017-03-03T09:57:44.637 回答