有没有算法在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");
但每次都会生成相同的密钥。用于生成安全密钥的任何其他好算法?
答案 0 :(得分:2)
要生成随机密钥,请使用KeyGenerator类,代码如下:
KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(KEY_SIZE);
SecretKey skey = kgen.generateKey();
请注意,如果您希望稍后解密数据库,显然必须将此密钥安全地存储在某处,因此可能值得继续使用您提出的基于PBE的解决方案。
答案 1 :(得分:1)
通常,要实现您想要的功能,您可以使用PBE密钥加密/解密随机密钥(您必须将其与数据分开存储,并尽可能将其与数据分开),这些密钥用于加密/解密数据。那么您的数据密文本身与没有加密密钥的密码没有直接关系。