2

我正在尝试使用 Bouncy/SpongyCastle 的 OAEP 编码来解码一些包装数据。但是,用于初始化类的 SpongyCastle APIOAEPEncoding需要CipherParameters. 就我而言,我正在尝试使用 Android 解包某些东西PrivateKey,所以我假设我需要以某种方式将密钥转换为AsymmetricKeyParam并将其粘贴在OAEPEncoding.init函数中。但是,我确实尝试过寻找类似的东西,但大多数示例都显示通过执行getPrivate().getEncoded(). 但是,Android 不允许您获取原始私钥,所以我不确定如何处理这个...
编辑:我使用 BC 的 OAEP 类的原因是将 OAEP 与 SHA-256 一起使用

4

1 回答 1

3

无法访问存储在 Android Keystore 中的密钥材料。您可以使用密钥,但不能提取它们。这是一个安全限制。privateKey.getEncoded()将始终为空,您将无法提取参数以使用 SpongyCastle 创建密钥。

请参阅Android 密钥库的安全功能

提取预防

使用两种安全措施保护 Android Keystore 密钥的密钥材料不被提取:

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

如果您想使用 OAEP,您需要自己创建和存储密钥或以 Android>=23 为目标

于 2017-03-03T09:57:44.637 回答