是Java AES加密FIPS 140-2符合条件



我的加密模块写在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是关于加密模块的,因此,除非您自己实施密码模块,否则您不能要求密码类或应用程序合规(代码中显然存在弱点)

最新更新