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));