Java Android Cipher.getInstance()安全问题
我的Android代码中有RSA的问题,如本问题所述,公认的答案表明了此解决方案: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,这是不安全的。” 使用这个真的安全吗?还有其他选择吗?一般来说,此通知是正确
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模式。