我已经获得了模数、公共指数和私有指数,并需要在安卓设备上安全地存储这些值。我该如何实现?许多示例是在不获取n、d、e参数的情况下创建公钥和私钥。但我已经获得了这些n、e、d值,并希望安全地存储它们,然后使用这些值创建我的ICC公钥证书,以及签署我的动态数据。我该如何实现?
使用 Keystore 系统。 setEntry() 可以让你存储任何实现了 KeyStore.Entry 接口的对象。如果你需要存储不适用默认值的数据,可以简单地实现自己的子类型。(有一个名为 RSAPrivateCrtKey 的东西,可以存储在 PrivateKeyEntry 中。)
可能,在Android设备上唯一安全的存储方式是Android Keystore系统。引用:密钥材料从未进入应用程序过程中。并且密钥材料可以绑定到安全硬件上。(参见http://developer.android.com/training/articles/keystore.html)它的问题在于您受到存储内容的限制。KeyChain类允许您存储私钥和证书链。而Keystore提供程序支持以下类型的条目:PrivateKeyEntry,SecretKeyEntry,TrustedCertificateEntry,根据文档。实际上,尝试放置SecretKeyEntry的实例会导致异常。我建议在密钥库中放置两个条目。1. KeyStore.PrivateKeyEntry,您可以通过给定的PrivateKey(使用RSAPrivateKeySpec与KeyFactory结合生成的模数和私有指数)来实例化。 2. KeyStore.TrustedCertificateEntry与您的自签名证书,您需要使用java keytool预先生成,并从资产中加载。根据定义,它不应该是机密的。