Boa tarde!
Estou precisando no meu sistema utilizar uma chave criptográfica DoubleDes, esou tenado criqar no Java mais não estou conseguindo, apenas estou conseguindo criar chave Des e Triple Des. Alguem sabria como posso criar.
Obrigado!
Boa tarde!
Estou precisando no meu sistema utilizar uma chave criptográfica DoubleDes, esou tenado criqar no Java mais não estou conseguindo, apenas estou conseguindo criar chave Des e Triple Des. Alguem sabria como posso criar.
Obrigado!
Olá Filipe,
É possível gerar chaves Double DES através do algoritmo DESede - Triple DES.
Uma chave Triple DES contém 192 bits - 24 bytes, desses, 24 são bits de pariedade e os 168 bits restantes são usados para operações criptográficas.
Uma chave Double DES contém 128 bits - 16 bytes, desses, 16 são bits de pariedade e os 112 bits restantes são usados para operações criptográficas.
Essas especificações se encontram na framework Java Cryptography Extension - JCE
Guia de Referência: http://java.sun.com/j2se/1.5.0/docs/guide/security/jce/JCERefGuide.html#AppA
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import java.security.NoSuchAlgorithmException;
public class DES2 {
public static void main(String args[]) {
SecretKey doubledes;
try {
KeyGenerator key = KeyGenerator.getInstance("DESede");
// O método init permite que seja especificado em bits o tamanho da chave que será criada.
// No nosso caso Double DES - 112 bits.
key.init(112);
doubledes = key.generateKey();
// A chave retornada terá o tamanho de 24 bytes, mas os 8 últimos bytes são despresívies no nosso caso.
// Eles são equivalentes aos 8 primeiros bytes da chave - Atenção: Isso é somente no caso de chaves Double DES.
byte[] chave = doubledes.getEncoded();
} catch(NoSuchAlgorithmException ex) {
ex.printStackTrace();
}
}
}
Exemplo:
com… key.init( 112 ): Double DES
Chave retornada em hexadecimal:
5b 26 b3 34 fe 45 37 75 76 0d fb 32 45 f2 1a 75 5b 26 b3 34 fe 45 37 75
(Reparem os primeiros 8 bytes com os 8 últimos, São IGUAIS)
com… key.init( 168 ): Triple DES
Chave retornada em hexadecimal:
10 b5 cb ef d3 70 86 7a 79 68 61 85 b0 23 04 13 c1 7f 34 2a c4 19 0d bc
(Reparem os primeiros 8 bytes com os 8 últimos, São DIFERENTES)
Espero ter ajudado =D
Abraço !