Bem, é impreciso - é apenas codificado em hexadecimal. A parte relevante codificada em hexadecimal é F700AD168253BC248497969EDB988620 - o 1: significa que foi criptografado pela KEY001 em keys.ini. Posso gerar a mesma sequência criptografada usando tanto uDESEncrypt quanto as classes javax.crypto, com algoritmo = "DESede", transformação = "DESede/CBC/PKCD5Padding". Recebo o resultado " 1:0653565108cc220e" de uDESEncrypt e "0653565108CC220E" do java.
Minha sugestão seria que você alterasse a KEY00x em keys.ini que acredita estar sendo usada, verifique se o DES3 gerado dentro do IDM muda, então use essa chave em hexadecimal com uma função rápida usando javax.crypto para garantir que esteja usando o mesmo método de geração e chaves. Um código java de exemplo que deve produzir os mesmos resultados que uDESEncrypt (sem a parte " 1:") é o seguinte.
String PLAIN_TEXT = "SEU TEXTO AQUI";
String SHARED_KEY = "SUA CHAVE AQUI"; // apenas os 48 caracteres hexadecimais
String algoritmo = "DESede";
String transformação = "DESede/CBC/PKCS5Padding";
byte[] keyValue = Hex.decodeHex(SHARED_KEY.toCharArray());
DESedeKeySpec keySpec = new DESedeKeySpec(keyValue);
IvParameterSpec iv = new IvParameterSpec(new byte[8]);
SecretKey key = SecretKeyFactory.getInstance(algoritmo).generateSecret(keySpec);
Cipher encrypter = Cipher.getInstance(transformação);
encrypter.init(Cipher.ENCRYPT_MODE, key, iv);
byte[] input = PLAIN_TEXT.getBytes("UTF-8");
byte[] encrypted = encrypter.doFinal(input);
System.out.println(new String(Hex.encodeHex(encrypted)).toUpperCase());
Editado por: Chris Foley em 1 de março de 2012 às 2:01 AM