小编tkr*_*tkr的帖子

xws-security(webservices-rt)中的GCM加密和解密

我已经使用 JDK8 在 xws-security (EncryptionProcessor.java) 中成功实现了对 GCM 加密的支持,并针对其他系统进行了测试。但是我在解密时遇到问题。第一个问题如下java.security.InvalidAlgorithmParameterException:不支持的参数:javax.crypto.spec.IvParameterSpec。我通过将初始化向量 (iv) 从 IvParameterSpec() 更改为 GCMParameterSpec() 解决了问题,如下所示(来自 DecryptionProcessor.java 的代码片段)

          try {
        String dataAlgorithm =  JCEMapper.translateURItoJCEID(tmp);
        decryptor = Cipher.getInstance(dataAlgorithm);

        //decryptor = Cipher.getInstance("DESede/CBC/ISO10126Padding");

        int ivLen = decryptor.getBlockSize();
        byte[] ivBytes = new byte[ivLen];

        System.arraycopy(cipherInput, 0, ivBytes, 0, ivLen);
        if (dataAlgorithm.matches(".*[gG][cC][mM].*$")) { // TK 03/09/2015 - probably needs more places for decrypting body stuff
          GCMParameterSpec iv = new GCMParameterSpec(ivLen * Byte.SIZE, ivBytes);
          decryptor.init(Cipher.DECRYPT_MODE, symmetricKey, iv);
        }
        else {
          IvParameterSpec iv = new IvParameterSpec(ivBytes);
          decryptor.init(Cipher.DECRYPT_MODE, symmetricKey, iv); <===== …
Run Code Online (Sandbox Code Playgroud)

java javax.crypto aes-gcm

5
推荐指数
1
解决办法
3090
查看次数

标签 统计

aes-gcm ×1

java ×1

javax.crypto ×1