我正在使用https://github.com/simbiose/Encryption来加密我的Android应用程序中的数据。
我想到了双重加密。
String key = "key";
String salt = "someSalt";
byte[] iv = new byte[16];
Encryption encryption = Encryption.getDefault(key, salt, iv);
String encrypted = encryption.encryptOrNull("Some String");
Log.d("Encrypto", "Encryption Level 1 : "+encrypted);
encrypted = encryption.encryptOrNull(encrypted);
Log.d("Encrypto", "Encryption Level 2 : "+encrypted);
String decrypted = encryption.decryptOrNull(encrypted);
Log.d("Encrypto", "Decryption Level 2 : "+decrypted);
decrypted = encryption.decryptOrNull(decrypted);
Log.d("Encrypto", "Decryption Level 1 : "+decrypted);
这很好用,但是推荐吗?
主要问题:这是一个好的加密库吗?如果没有,请推荐我一个更好的人
答案 0 :(得分:4)
您真的需要加密数据吗?
https://www.schneier.com/blog/archives/2015/06/why_we_encrypt.html
为什么要双重加密?有更好的方法(例如,更长的密钥)来增加抵抗力,使人们对密文进行离线暴力破解。
“ 通过默默无闻的安全性”是禁止的。回到您需要的基础知识(密钥长度,块大小,加密模式,何时使用对称或非对称密钥)等。
在编写Android应用程序时,我会问..
如果这是我的应用,并且&&我关心机密,我会使用硬件支持的加密(接受某些较旧的Android设备可能不支持的加密)或使用本机(C)加密库。后者为您提供了广泛的设备支持,但引入了其他问题(JNI边界,代码提升)。
总而言之,引入加密听起来很简单。但是,当它只是强调有趣的东西正在受到保护时,您真的需要它吗?
PS-您可能希望在以下问题上重新发布此问题:https://security.stackexchange.com/
答案 1 :(得分:1)
这很好用,但是推荐吗?
简短答案:否
答案:使用流密码,使用与您展示的相同的参数(密钥,IV,随机数,计数器等)进行双重加密将产生明文,允许所有人读取数据。