来加密Android(Java)应用程序中的数据。SonarQube的文件指出:
高级加密标准(AES)加密算法可用于各种模式。没有填充的伽罗瓦/计数器模式(GCM)应优先于以下不安全的组合:
Cipher c = Cipher.getInstance("AES/GCM/NoPadding");
Cipher c = Cipher.getInstance("RSA/ECB/PKCS1Padding");
GCM模式下的AES作为一种分组密码算法得到了保护。但这并不能保证使用AES(在GCM模式下)加密数据的代码是安全的。有几个方面可能会出错,使代码容易受到攻击。开发人员有责任以正确的方式编写代码,以获得所需的安全级别。一些可能出错的例子是:
string
数据类型中,该数据类型在堆中停留诸如此类。
以下是我的加密/解密方法: 所以现在当我尝试加密时,我得到了这个异常: 我已经尝试在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