Как зашифровать в Python и расшифровать в Java?

Я пытаюсь зашифровать некоторые данные в программе Python и сохранить их, а затем расшифровать эти данные в программе Java. В Python я шифрую вот так:

from Crypto.Cipher import AES
KEY = '12345678901234567890123456789012'

def encrypt(data):
    cipher = AES.new(KEY, AES.MODE_CFB)
    return cipher.encrypt(data)

А в Java я расшифровываю вот так:

import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;

public class Encryption {
    private static byte[] KEY = { '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '1', '2', '3', '4', '5', '6', '7',
        '8', '9', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '1', '2' };

    public static byte[] decrypt(byte[] data) throws NoSuchAlgorithmException, NoSuchPaddingException,
            InvalidKeyException, IllegalBlockSizeException, BadPaddingException {
        Cipher c = Cipher.getInstance("AES/CFB/NoPadding");
        Key key = new SecretKeySpec(KEY, "AES");
        c.init(Cipher.DECRYPT_MODE, key);
        return c.doFinal(data);
    }
}

Но получаю Exception in thread "main" java.security.InvalidKeyException: Illegal key size or default parameters. Ясно, что я делаю что-то не так. Но что?

7
задан Chris B. 3 May 2012 в 23:32
поделиться