아래와 같이 JavaScript에서 JSON을 암호화하려고 시도했으며 암호화되어 있습니다. 아래의 "obj"는 JSON 데이터이며 "ency_key"이유를 모르겠습니다. Google에서 문자열을 전달한 곳에서이 항목을 따랐습니다.javax.crypto.BadPaddingException : 최종 블록이 적절하게 채워지지 않은 경우 예외
var obj1 = CryptoJS.AES.encrypt(obj,'ency_key').toString();
$.ajax({
url: "web/enyDcyData",
"type": "POST",
async:true,
data:{
json:obj1,
}
하지만 암호를 해독 할 수없는 java에서 아래처럼 시도했습니다. 오전 을 얻고 있습니다. javax.crypto.BadPaddingException : 최종 블록이 올바르게 채워지지 않았다고 가정하면 예외는 입니다. "doFinal (base64Decode (ency_data));" 제가 실수를 저질렀습니다. 제발이 문제를 해결하도록 도와주세요.
public static String decrypt(String ency_data)
SecretKeyFactory keyFac = SecretKeyFactory.getInstance(one);
SecretKey seckey = keyFac.generateSecret(new PBEKeySpec(two));
Cipher cipher = Cipher.getInstance(one);
pbeCipher.init(Cipher.DECRYPT_MODE, seckey , new PBEParameterSpec(SALT, 20));
byte[] res = cipher.doFinal(base64Decode(ency_data));
String decryptedValue = new String(res,"UTF-8");
}
private static byte[] base64Decode(String ency_data) throws IOException {
return new BASE64Decoder().decodeBuffer(ency_data);
}
_ "자바에서 다른 방법을 시도했지만 다른 오류가 발생했습니다."_ 그 다음에는 그 중 하나 이상을 보여줍니다. – Andreas
JavaScript 측에서 어떤 키가 사용되고 있는지 알지 못하는 것 같습니다. , 당신은 자바 측의'keyFac.generateSecret()'에서 같은 키를 얻었는지 여부를 확인할 수 없다. 나는 암호화 문제를 묻는 기본적인 전제 조건은 자바 측에서 암호화를 위해 사용하는 키가 자바 측에서 해독하기 위해 사용하는 키와 동일한 지 확인하는 것입니다. 귀하의 결과물은 다른 열쇠 (다른 많은 오류들과 함께)를 사용하는 것과 일치합니다 ... 당신이 그것을 배제 할 수 없다면, 우리는 당신을 정말로 도울 수 없습니다. '하나'가 AES를 선택합니까? – lockcmpxchg8b