安全密钥为Android数据库

时间:2013-03-18 04:29:08

标签: java android encryption cryptography

有没有算法在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");

但每次都会生成相同的密钥。用于生成安全密钥的任何其他好算法?

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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