Android中创建so库存储密钥,android - 使用存储在KeyStore中的密钥加密Realm - SO中文参考 - www.soinside.com...

我正在尝试在我的应用程序中设置加密的默认域实例。我们的想法是使用具有给定别名的KeyPairGenerator生成密钥,将其存储在AndroidKeyStore中,并在每次需要时使用所述密钥。

我所做的

这是我生成密钥的方式:

KeyStore ks = KeyStore.getInstance("AndroidKeyStore");

ks.load(null);

if (!ks.containsAlias(KEY_ALIAS)) {

Calendar start = Calendar.getInstance();

Calendar end = Calendar.getInstance();

end.add(Calendar.YEAR, 99);

KeyPairGeneratorSpec spec = new KeyPairGeneratorSpec.Builder(this)

.setAlias(KEY_ALIAS)

.setSubject(new X500Principal("CN=Example, O=ExampleOrg"))

.setSerialNumber(BigInteger.ONE)

.setStartDate(start.getTime())

.setEndDate(end.getTime())

.build();

KeyPairGenerator generator = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore");

generator.initialize(spec);

KeyPair keyPair = generator.generateKeyPair();

}

我正在使用KeyPairGenerator,因为我需要支持api版本18及更高版本。

以下是我在应用程序中设置默认域实例的方法:

RealmConfiguration config = null;

try {

config = new RealmConfiguration

.Builder(this)

.encryptionKey(ks.getKey(KEY_ALIAS, null).getEncoded())

.name("dealmatrix.realm")

.schemaVersion(1)

.build();

其中ks是一个像这样获得的K​​eystore实例:

Keystore ks = KeyStore.getInstance("AndroidKeyStore");

ks.load(null);

什么错了

我的问题是这个表达式:

ks.getKey(KEY_ALIAS, null).getEncoded()

返回null,这可以理解地导致异常。

我在网上看到这是KeyStore系统的预期行为。

如果我确实无法获得存储的加密密钥的字节数组,我应该如何使用所述密钥加密我的领域?

有没有其他方法可以安全地存储加密密钥,以便我可以在我的领域配置中使用它?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值