2012-06-01 11 views
0

PHP를 사용하여 데이터를 암호화하는 데 Triple DES 알고리즘을 사용하고 있습니다. 그런 다음 C# Windows Forms 응용 프로그램을 사용하여 암호를 해독합니다.트리플 DES를 사용하여 데이터를 암호 해독하면 원래 텍스트 끝에 " 0 0 0 0 0 0 0 0"이 추가됩니다.

일부 데이터의 경우 암호를 해독하면 PHP로 암호화 된 원본 텍스트의 끝에 \0\0\0\0\0\0\0\0이 표시됩니다. 그 원인은 무엇일까요?

답변

5

암호화 알고리즘은 데이터가 특정 바이트 수의 배수가되어야합니다. 데이터가 올바른 길이가 아닌 경우 데이터를 채우기 위해 널 문자가 추가됩니다. 이것은 암호 해독 후보고있는 것입니다. 이것은 예상되며 스트립을 벗겨 내면됩니다.

+0

문제는 0 바이트가 패딩에 있는지 또는 일반 텍스트 바이트가 실제로 0인지를 알 수있는 방법이 없다는 것입니다. –

1

mcrypt_encrypt은 기본적으로 제로 패딩을 잘못 선택합니다. 대신 mcrypt_encrypt 페이지에 대한 사용자 의견에 설명 된대로 PKCS7 패딩을 사용하십시오.

관련 문제