Java AES实现问题“非法密钥大小”,带有32字节密钥

时间:2016-11-18 16:49:35

标签: java encryption aes

我正在尝试使用Java执行AES加密。

我的密钥大小为32个字节,由64个ASCII字符表示。 (我想用32字节密钥执行AES,我认为这是AES 1024位)

byte[] key = DatatypeConverter.parseHexBinary("03d42e229a8992a195a7bc0789a0fb6636cc5edeb0f106c8ca0d843b269f5396");

当我调用以下方法时,我会收到以下内容:

java.security.InvalidKeyException: Illegal key size or default parameters

这是我在Java中的方法

public static byte[] AESDecryption(byte[] key, byte[] data)
    {
        byte[] retval = null;
        try 
        {
            Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding", "SunJCE");


            SecretKeySpec thekey = new SecretKeySpec(key,"AES");

            cipher.init(Cipher.DECRYPT_MODE, thekey);

            retval = cipher.doFinal(data);


        } 
        catch (NoSuchAlgorithmException e) 
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
        catch (NoSuchProviderException e) 
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        catch (NoSuchPaddingException e) 
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (InvalidKeyException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IllegalBlockSizeException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (BadPaddingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return retval;
    }

0 个答案:

没有答案