Criptografia 3DES

2 respostas
monteiro_luiz

Pessoal estou tentando fazer uma encriptação de senha para um cliente, O lance é que preciso descriptografar 2 chaves randomicas (randomKey1 e randomKey2) com uma chave mestra (masterKey), daí ele me gera 2 chaves de 8 bytes no qual eu terei que gerar uma de 16 bytes para encripitar a senha preenchido com 0. Em DES funciona, não estou conseguindo fazer em 3DES.

Alguém pode me ajudar???

byte[] masterKeyBytes = hexToBytes("A0B1C2D3E4F5A6B7F9E8D7C6B5A4F3E2");
        byte[] randomKeyBytes1 = hexToBytes("ABCDEF1234567890");
        byte[] randomKeyBytes2 = hexToBytes("1A2B3C4D5E6F7890");

        System.out.println("Master Key  : "+bytesToHex(masterKeyBytes));
        System.out.println("Random Key1 : "+bytesToHex(randomKeyBytes1));
        System.out.println("Random Key1 : "+bytesToHex(randomKeyBytes2));

        SecretKeyFactory kf = SecretKeyFactory.getInstance("DESede");
        Cipher cf = Cipher.getInstance("DESede/ECB/NoPadding");

        KeySpec ks = new DESKeySpec(masterKeyBytes);
        SecretKey ky = kf.generateSecret(ks);
        cf.init(Cipher.DECRYPT_MODE, ky);
        byte[] auxKeyBytes1 = cf.doFinal(randomKeyBytes1);

        ks = new DESKeySpec(masterKeyBytes);
        ky = kf.generateSecret(ks);
        cf.init(Cipher.DECRYPT_MODE, ky);
        byte[] auxKeyBytes2 = cf.doFinal(randomKeyBytes2);

        String auxKey = bytesToHex(auxKeyBytes1) + bytesToHex(auxKeyBytes2);

        System.out.println("AuxKey1     : "+bytesToHex(auxKeyBytes1));
        System.out.println("AuxKey2     : "+bytesToHex(auxKeyBytes2));

        byte[] auxKeyBytes = hexToBytes(auxKey);
        ks = new DESKeySpec(auxKeyBytes);
        ky = kf.generateSecret(ks);
        cf.init(Cipher.ENCRYPT_MODE, ky);
        byte[] userKeyBytes = cf.doFinal(hexToBytes("1234FFFFFFFFFFFF"));

        
        System.out.println("AuxKey      : "+bytesToHex(auxKeyBytes));
        System.out.println("UserKey     : "+bytesToHex(userKeyBytes));

2 Respostas

rod

Tenho um exemplo no meu blog, veja se te ajudar:

http://www.rodrigolazoti.com.br/pt/2009/07/06/criptografia-tripe-des-em-java/

monteiro_luiz

rlazoti:
Tenho um exemplo no meu blog, veja se te ajudar:

http://www.rodrigolazoti.com.br/pt/2009/07/06/criptografia-tripe-des-em-java/

Cara tem como modificar o UFT-8 para Hexa? Estou trabalhando com as Strings em Hexa, ou isso não altera nada?

Criado 4 de março de 2010
Ultima resposta 4 de mar. de 2010
Respostas 2
Participantes 2