웹 서비스에서받은 AES 암호화 데이터를 디코딩하려고합니다. 암호화 길이는 : 4256 바이트 암호 해독 된 길이는 : 4247 바이트Android - AES 암호 해독에 이상한 콘텐츠 길이가 없음
Baiscally 난 그 때문에 일부 패딩이나 뭐 ... 하지만의 확인이 될 것입니다 생각합니다. 데이터는 실제로 평문 텍스트를 해독합니다. 끝에서 일부 문자가 누락 된 것을 제외하고는.
마지막에 누락 된 문자가 표시 될 수있는 이유는 무엇입니까? 파울로 말한대로
이public static byte[] decrypt(byte[] input) throws Exception {
byte[] rawKey = getKey("bla".getBytes());
SecretKeySpec secretKeySpec = new SecretKeySpec(rawKey, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
AlgorithmParameterSpec iv = new IvParameterSpec(new byte[] { 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 });
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, iv);
return cipher.doFinal(input);
}
당신 (또는 웹 서비스, 실제로) 암호화에 동일한 모드 (특히 패딩)를 사용 했습니까? –
참고 : 상수 초기화 벡터가있는 CBC는 보안 모드가 아닙니다. 각 메시지에 대해 임의로 생성 된 새 초기화 벡터를 사용하고 메시지와 함께 전송하려고합니다. –
나도 알아,하지만 불행히도 나는 서버 쪽 코드에 액세스 할 수 없으며 이것은 서버 쪽 (.NET)에서 암호화를 수행하는 데 사용되는 구성입니다. 그리고 그것은 텍스트의 90 %가 corretly 해독 된 이후로 작동하는 것 같습니다 ... – Goddchen