Java 双重加密
我正在使用android应用程序加密数据 我想到了双重加密Java 双重加密,java,security,encryption,Java,Security,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", "Encry
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);
这非常有效,但建议使用吗
主要问题:这是一个好的加密库吗?如果没有,请给我推荐一个更好的您真的需要加密数据吗 为什么要双重加密?有更好的方法——例如,更长的密钥——来增加对离线暴力攻击密文的抵抗力 “通过模糊实现安全”是一个禁忌。回到您需要的基本知识(密钥长度、块大小、加密模式、何时使用对称或非对称密钥)等 当你正在编写一个Android应用程序时,我想问一下
- 该库是用Java编写的,它使Java 系统调用。这将很容易反转/挂接系统调用。当你可以通过挂接Android系统调用来转储密钥时,添加更长的密钥是否有助于强化你的应用程序李>
- 您的Android Java代码被反编译为“几乎”源代码或返回 到Smali代码-然后修改-然后重新编译
- 您打算如何分发密钥?运行时还是静态烘焙到代码中?对于所有应用程序用户,是随机键还是相同的键
- 你能利用Android硬件来保存和保护你的密钥,而不仅仅是把密钥放在软件中吗李>
答:使用流密码,使用与您展示的相同参数(密钥、IV、nonce、计数器等)的双重加密将生成明文,允许每个人读取您的数据。使用固定IV是不安全的。加密任意次数,如果你使用的是固定的IV,那么它对你没有帮助。你也在用相同的密钥加密。如果有人得到了密钥,你可以加密1000次,这无关紧要。因为我们不知道的加密算法最好不要使用Simbios,snake oil。使用AES(高级加密标准)等标准。使用安全的加密方法,安全性在于不容易找到的好密钥,而使用128位随机密钥的AES是安全的。