当前位置: 首页 > 知识库问答 >
问题:

Sonarqube:确保在这里加密数据是安全的。AES/GCM/Nopadding,RSA/ECB/PKCS1 padding

农飞翔
2023-03-14

来加密Android(Java)应用程序中的数据。SonarQube的文件指出:

高级加密标准(AES)加密算法可用于各种模式。没有填充的伽罗瓦/计数器模式(GCM)应优先于以下不安全的组合:

  • 电子码本(ECB)模式:在给定的密钥下,任何给定的明文块总是被加密到相同的密文块。因此,它不能很好地隐藏数据模式。在某些意义上,它不能提供严重的消息保密性,因此根本不建议在密码协议中使用它。
  • 带有PKCS#5填充(或PKCS#7)的密码块链接(CBC)容易受到填充oracle攻击
Cipher c = Cipher.getInstance("AES/GCM/NoPadding");
Cipher c = Cipher.getInstance("RSA/ECB/PKCS1Padding");

共有1个答案

仲孙俊贤
2023-03-14

GCM模式下的AES作为一种分组密码算法得到了保护。但这并不能保证使用AES(在GCM模式下)加密数据的代码是安全的。有几个方面可能会出错,使代码容易受到攻击。开发人员有责任以正确的方式编写代码,以获得所需的安全级别。一些可能出错的例子是:

  1. IV对给定键重复
  2. 键或原始数据存储在string数据类型中,该数据类型在堆中停留
  3. 密钥以明文形式存储在代码存储库中的属性文件中

诸如此类。

 类似资料:
  • 以下是我的加密/解密方法: 所以现在当我尝试加密时,我得到了这个异常: 我已经尝试在encrypt和Decrpt中使用密码实例。它只用于加密而不用于解密。我认为需要填充,因为数据大小不是16字节的倍数。“data”字节长度打印为,因此尝试将字符附加到数据中,然后进行加密,但也不起作用。

  • 当我用默认的AES/GCM算法初始化一个密码对象时,它有一个reandom 12字节IV但是前4字节没有得到增量,因此调用final并抛出java.lang.IllegalStateException:不能重用相同的密钥和IV for multiple encryptions异常。

  • 问题内容: 我想知道AES加密后的数据大小,这样我就可以避免主要出于了解大小而缓存我的后AES数据(在磁盘或内存上)。 我使用128位AES 和进行加密。 使用各种输入大小执行的一些测试表明,如下计算的后期加密大小是正确的: 但是我不确定以上公式是否适用于所有可能的输入大小。 在应用AES加密后,是否有一种方法可以计算数据的大小-事先无需缓存(磁盘或内存中的)加密数据即可知道其加密后的大小? 问题

  • 我在加密过程中尝试了以下选项: 但这会引发以下错误:

  • 我正在iOS上使用加密/解密我的机密密钥,并将其保存在中。已成功设置并加密数据。但是每当我试图解密数据时,它都会给我以下错误: Error domain=nsosstatuserrordomain code=-50\“ecies:未能到aes-gcm解密数据\”userinfo={nsdescription=ecies:未能到aes-gcm解密数据} 此外,在10.3中,使用KseckeyAlgo