Android Cipher.getInstance()安全问题

时间:2016-09-29 15:30:17

标签: java android cryptography

我在我的Android代码中遇到了RSA问题,该问题在Crash casting AndroidKeyStoreRSAPrivateKey to RSAPrivateKey中有所描述,并且接受的答案表明了这个解决方案:

Cipher some_cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");

它可以工作,但是如果我使用它,Android Studio突出显示此代码为“Cipher#getInstance不应该使用ECB作为密码模式调用或不设置密码模式,因为android上的默认模式是ECB,这是不安全。“

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

1 个答案:

答案 0 :(得分:3)

一般来说,这个通知是正确的,但在这种特殊情况下(使用RSA)它是无关紧要的。

通常,您会对大型数据进行加密,从而产生多个加密块。如果您在这种情况下ECB肯定会导致不安全的加密。

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