3

是否有任何算法可以在 android 中生成加密密钥来保护数据库?

我试过这个 PBE 算法:

PBEKeySpec pbeKeySpec = new PBEKeySpec(password.toCharArray(), salt, 
    NUM_OF_ITERATIONS, KEY_SIZE);
SecretKeyFactory factoryKey = SecretKeyFactory.getInstance(PBE_ALGORITHM);
SecretKey tempKey = factoryKey.generateSecret(pbeKeySpec);
SecretKey secretKey = new SecretKeySpec(tempKey.getEncoded(), "AES");

但它每次都会生成相同的密钥。还有其他用于生成安全密钥的好算法吗?

4

2 回答 2

2

要生成随机密钥,请使用KeyGenerator类,代码如下:

KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(KEY_SIZE);
SecretKey skey = kgen.generateKey();

请注意,如果您希望稍后解密数据库,显然必须将此密钥安全地存储在某处,因此可能值得追求您的问题中提出的基于 PBE 的解决方案。

于 2013-03-18T16:34:17.867 回答
1

通常为了实现您想要的,您使用 PBE 密钥来加密/解密随机密钥(您必须存储,尽可能将其与您的数据分开),您可以使用它来加密/解密您的数据。那么,如果没有加密密钥,您的数据密文本身就与您的密码没有直接关系。

于 2013-03-26T14:18:31.433 回答