Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/198.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android Cipher.getInstance()安全问题_Java_Android_Cryptography - Fatal编程技术网

Java Android Cipher.getInstance()安全问题

Java Android Cipher.getInstance()安全问题,java,android,cryptography,Java,Android,Cryptography,我的Android代码中有RSA的问题,如本问题所述,公认的答案表明了此解决方案: Cipher some_cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); 它可以工作,但如果我使用它,Android Studio会将此代码突出显示为“Cipher”#getInstance不应使用ECB作为密码模式调用,或者不设置密码模式,因为Android上的默认模式是ECB,这是不安全的。” 使用这个真的安全吗?还有其他选择吗?一般来说,此通知是正确

我的Android代码中有RSA的问题,如本问题所述,公认的答案表明了此解决方案:

Cipher some_cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
它可以工作,但如果我使用它,Android Studio会将此代码突出显示为“Cipher”#getInstance不应使用ECB作为密码模式调用,或者不设置密码模式,因为Android上的默认模式是ECB,这是不安全的。”


使用这个真的安全吗?还有其他选择吗?

一般来说,此通知是正确的,但在这种特殊情况下(使用RSA),则与此无关

通常,加密大数据会导致多个加密块。如果您在这种情况下使用ECB,则肯定会导致加密不安全


但是,您正在使用RSA。通常RSA不用于加密多个块,而是用于加密一个块(例如,加密一个AES密钥)。AFAIR RSA甚至拒绝加密多个块。在这种情况下,选择欧洲央行并不重要——它永远不会发挥作用

是的,这是因为一旦任何数据块被破解(密钥泄露),黑客就可以轻松破解所有其他数据块。如何改进这一点?似乎没有,但似乎相当安全,请查看此链接谢谢答案看起来不错。更准确地说,AES之类的分组密码永远不应该使用ECB模式。公钥算法(如RSA)中的操作模式概念并不适用,但Java crypto API的设计者并不知道他在做什么,因此出于某种逃避逻辑的荒谬原因,您需要为RSA指定ECB模式。