Algoritmo de Criptografia AES

3 respostas
C
Olá amigos. To usando o exemplo abaixo para criptografar. O alterei o código para a chave não mudar. Perfeito ele criptografa normal e descriptografa com a mesma chave. Só que tenho que fazer isso em ?c? e to usando um algoritmo para fazer isso e funciona também. O problema é quando tenho q criptografar em Java e descriptograr em c. A minha duvida é a seguinte sobre a chave . Aqui vai a minha chave no código em c.
BYTE chave[16]={ 1 , 0 ,0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0 , 0};

O problema é q o código criptografado em c é diferente do código criptografado em Java.
Se a Mensagem é a mesma e a chave também. Acho que isso teria q ser igual.
Se alguém entende do algoritmo AES pode me ajudar porque tem alguma coisa errada acontecendo.

Abaixo vai o exemplo em Java.
// Get the KeyGenerator
        KeyGenerator kgen = KeyGenerator.getInstance("AES");
        kgen.init(128); // 192 and 256 bits may not be available
        
        
        // Generate the secret key specs.
        //SecretKey skey = kgen.generateKey( );
        
        // byte[] raw = skey.getEncoded( );
        byte[] raw ={1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
        
        SecretKeySpec skeySpec = new SecretKeySpec( raw , "AES" );
        
        
        // Instantiate the cipher
        Cipher cipher = Cipher.getInstance("AES");
        cipher.init( Cipher.ENCRYPT_MODE , skeySpec );
        byte[] encrypted = cipher.doFinal((args.length == 0 ?"ABC" : args[0]).getBytes());
        System.out.println(new String(encrypted));
        System.out.println("encrypted string: " + asHex(encrypted));
        
        cipher.init(Cipher.DECRYPT_MODE, skeySpec);
        byte[] original =
        cipher.doFinal(encrypted);
        
        String originalString = new String(original);
        System.out.println("Original string: " +
        originalString + " " + asHex(original));

3 Respostas

T

Qual é o modo de operação do algoritmo em C? Se for ECB, então você precisa usar em Java:

Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
C

po tentei fazer essa alteração para testar Cipher cipher = Cipher.getInstance("ECB");
não compilou …

T

Você precisa passar 3 parâmetros:
o nome do algoritmo (exemplo: AES)
o modo (exemplo: CBC ou ECB)
o padding (exemplo: PKCS5Padding, NoPadding)

Você não pode passar só o modo.

Criado 9 de outubro de 2007
Ultima resposta 10 de out. de 2007
Respostas 3
Participantes 2