Criptografia AES 128 CBC

Fala galera :smiley:

Tava brincando com o iTunes Music Store hoje, e descobri a URL que ele usa pra montar os resultados de listas de pesquisas e tudo mais. :twisted:

A coisa toda eh criptografada, usando AES 128 CBC. Agora, a perguntinha… ja tem isso na JDK, ou eu preciso dum BouncyCastle da vida? E, se tem, por onde eu comeco? :?

BouncyCastle. Ou JCE. Mas, se não estiver enganado, há várias restrições ao uso do JCE a pessoas não-norte americanas devido à legislação norte-americana.

Bom, consegui achar o AES, mas ate agora onde configurar e dizer pro bicho que eu quero CBC 128 eu nao sei… tou confiando que o bicho usa os defaults :smiley:

Usando BC, o erro eh meio bizarro:

javax.crypto.BadPaddingException: pad block corrupted at org.bouncycastle.jce.provider.JCEBlockCipher.engineDoFinal(JCEBlockCipher.java:544) at javax.crypto.Cipher.doFinal(DashoA6275) at itms.Main.main(Main.java:99) Exception in thread "main"

E o codigo:

[code] Cipher cipher = Cipher.getInstance(Main.CIPHER, new BouncyCastleProvider());

        KeyGenerator keyGen = KeyGenerator.getInstance(Main.CIPHER);

        SecretKeySpec spec = new SecretKeySpec(new byte[] {

        (byte) 0x8a, (byte) 0x9d, (byte) 0xad, (byte) 0x39, (byte) 0x9f, (byte) 0xb0, (byte) 0x14, (byte) 0xc1, (byte) 0x31,
                (byte) 0xbe, (byte) 0x61, (byte) 0x18, (byte) 0x20, (byte) 0xd7, (byte) 0x88, (byte) 0x95

        }, Main.CIPHER);

        cipher.init(Cipher.DECRYPT_MODE, spec);

        cipher.update(response);
        
        byte[] end = cipher.doFinal();
        System.out.println(new String(end));

[/code]

Main.CIPHER = “AES”, alias :wink:

Olá

Só para lembrar que existe:
http://java.sun.com/developer/technicalArticles/Security/AES/AES_v1.html

[]s
Luca

Amigo no modo de criptografia CBC é utilizando um vetor de inicializacao (IV) para começar as operações. Pelo que eu vi no seu código você não tem esse vetor.