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.