Olá, bom dia!
Estou em um projeto aonde eu preciso acessar um site via Java para fazer um upload de um arquivo, mapeei no Fiddler os comandos que precisam ser enviados no post para fazer login. Mas estou com uma dificuldade aonde o usuário e senha antes de fazer login o site faz uma criptografia no javascript, então no meu código java eu preciso replicar essa criptografia antes de mandar no post. Fiz esse código java para criptografar mas não estou conseguindo fazer login no site.
import javax.crypto.Cipher; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
public class Crypto {
private static final String key = "AMINHAKEYTEM32NYTES1234567891234";
private static final String initVector = "7061737323313233";
public static String encrypt(String value) {
try {
IvParameterSpec iv = new IvParameterSpec(initVector.getBytes("UTF-8"));
SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
byte[] encrypted = cipher.doFinal(value.getBytes());
return Base64.encodeBase64String(encrypted);
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
}
No javascript do site ele está usando essa criptografia.
function CryptItem(text) {
var key = CryptoJS.enc.Utf8.parse('AMINHAKEYTEM32NYTES1234567891234');
var iv = CryptoJS.enc.Utf8.parse('7061737323313233');
var encrypted = CryptoJS.AES.encrypt(CryptoJS.enc.Utf8.parse(text), "c2769646-42b5-4032-b0c6-d9d37d0dd278", key,
{
keySize: 128,
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
});
return encrypted;
}