我有以下方法来导出加密密钥:
private static SecretKey deriveKeySecurely(byte[] salt){
String password = "FAKE_PASSWORD";
KeySpec keySpec = new PBEKeySpec(password.toCharArray(), salt, sITERATION_COUNT, sKEY_SIZE_IN_BYTES * 8);
SecretKeyFactory keyFactory;
try {
keyFactory = SecretKeyFactory.getInstance(sALGORITHM);
byte[] keyBytes = keyFactory.generateSecret(keySpec).getEncoded();
return new SecretKeySpec(keyBytes, sSECRET_KEY_ALGORTHM);
} catch (NoSuchAlgorithmException | InvalidKeySpecException e) {
if(BuildConfig.DEBUG){
Log.e(sLOG_TAG, e.toString());
}
return null;
}
}
在此示例中,密码字符串是硬编码的。我知道我可以使用SharedPreferences来存储这个密码,但我不确定它是否可以安全地使用它。可能是Android KeyStore在某种程度上有用吗?