Bry*_*yan 16 encryption android rsa android-keystore
我正在尝试使用Cipher
带有RSA密钥对的a "AndroidKeyStore"
.在我能找到的所有Android文档中,示例显示Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding")
或Cipher.getInstance("RSA/ECB/PKCS1Padding")
.两者都在Android Studio上提出相同的警告:
不应使用ECB加密
Cipher#getInstance不应该使用ECB作为密码模式调用,或者不设置密码模式,因为android上的默认模式是ECB,这是不安全的.
显然我不能省略它,或者将模式设置为None
,因为默认是ECB.如果ECB模式不安全,我应该使用哪种模式?
如果我使用任何其他模式(我知道),我会得到一个NoSuchAlgorithmException: No provider found for RSA/{mode}/OAEPWithSHA-256AndMGF1Padding
.填充可能是问题吗?
无论哪种方式,根据Android KeyStore系统文档,ECB模式似乎是它在使用RSA时支持的唯一密码块模式.
Ale*_*bin 20
这看起来像Android Studio中用于查找问题的Android Lint中的错误.该警告的目的是警告使用具有对称密码的ECB块模式,例如AES.但是,对于RSA,没有必要对此进行警告,因为RSA/ECB/... Cipher只接受/处理一个输入块.
我建议你在https://code.google.com/p/android/上针对Android Lint 提交一个错误.
我喜欢这个解释(来自Maarten Bodewes):
"RSA/ECB/PKCS1Padding"
实际上并没有实现ECB模式加密.应该调用"RSA/None/PKCS1Padding"
它,因为它只能用于加密单个明文块(或者实际上是一个密钥).这只是Sun/Oracle的命名错误.
如果您的Android版本包含BouncyCastle,那么您可以使用None
而不是ECB
.
归档时间: |
|
查看次数: |
6646 次 |
最近记录: |