我的加密模块写在Java 8中,如下 -
private static final String SECRET_KEY_PASSPHRASE="012345678901234567890123456789012"; //256 bit
public Cipher getCipherInstance(int encryptionMode)
throws ... /*throws necessary exceptions*/{
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
byte[] keyBytes=getKeyBytes(SECRET_KEY_PASSPHRASE);
/*getKeyBytes function returns 16 bytes from 256 bit passphrase*/
SecretKeySpec secretKeySpecy = new SecretKeySpec(SECRET_KEY_PASSPHRASE.getBytes("UTF-8"), "AES");
IvParameterSpec ivParameterSpec = new IvParameterSpec(keyBytes);
cipher.init(encryptionMode, secretKeySpecy, ivParameterSpec);
return cipher;
}
我使用从上面函数返回的密码对象加密/解密数据。
我的代码或Java是否符合AES或Cipher类FIPS 140-2的实现?
,但我没有得到任何文件,说Java AES实施符合FIPS。
默认的java jce不符合支持较弱或过时的原语的fips。
AES是FIPS-140-2(附件A)中支持的列出的加密功能。
为了确保FIPS合规性可以使用符合FIPS的JCE实现(IBM FIPS JSSE,RSA BSAFE,BONCYCASTLE BC -FA,..)或JSSE以FIPS模式(连接到符合FIPS的硬件 - SmartCard -SmartCard,HSM,HSM)。
我的代码或Java是否符合AES或Cipher类FIPS 140-2的实现?
fips-140-2是关于加密模块的,因此,除非您自己实施密码模块,否则您不能要求密码类或应用程序合规(代码中显然存在弱点)