2016-10-13 16 views
2

https://www.tools4noobs.com/online_tools/encrypt/ "1234567890abcdef"키에 대한 DES ECB 결과로 "a67a318c98a0307502ba81caade2f3a9"를 제공하고 페이로드는 "이것을 암호화합니다".PHP를 사용하는 DES ECB 암호화

PHP 코드

echo bin2hex(mcrypt_encrypt(
    MCRYPT_DES, 
    hex2bin("1234567890abcdef"), 
    "encrypt this", 
    MCRYPT_MODE_ECB)) . "\n"; 

인쇄를 "1a29ee87f2ad67644ff28450c676a664".

코드에 무슨 문제가 있습니까?

+0

* tools4noobs *는 패스워드를''12345678 ''(예 :'hex2bin')로 자르는 것 같습니다. https://3v4l.org/sm8p8 – Yoshi

답변

2

noobs4tools 웹 사이트는 hex2bin 기능을 제거하고 키 길이를 8 자로 줄입니다 (요시는 설명에 명시된 바와 같이).

12345678의 keysize를 사용하면 웹 사이트와 PHP 코드의 출력이 일치합니다.

DES 키 크기는 매뉴얼에 56 비트로 명시되어 있습니다. 아래에 DES 관련 키 설정에 대한 유용한 배경을 설명합니다. 코드에서 사용

"12345678" 

키 :

hex2bin("1234567890abcdef"); // 4Vx���� 

이 차이는 당신에게 다른 출력을 제공하는 noobs4tools 웹 사이트에서 사용

How should I create my DES key? Why is an 7-character string not enough?

키.

따라서 웹 사이트는 을 다른 숫자 또는 데이터 형식으로 변환하지 않습니다. 페이지 스크립트에서 이미 올바르게 형식화 된 값을 제공 할 것으로 기대합니다.

+0

http://php.net/manual/en/function.mcrypt-encrypt.php에 따르면 "유효하지 않은 키와 크기는 더 이상 허용되지 않습니다 .mcrypt_encrypt()가 이제 경고를 던집니다 이전에 키와 IV가 '\ 0'바이트로 다음 유효한 크기로 패딩되었습니다. " (PHP 5.6.0부터). PHP 5.6.26-0 + deb8u1을 사용하여 코드를 테스트했으며 mcrypt_encrypt()는 경고를 던지거나 FALSE를 반환합니다. – haba713

+0

@ haba713 주셔서 감사합니다 당신의 의견은 정확합니다, 나는 내 대답을 업데이 트했습니다. – Martin

+0

미안 @ 마틴. "not"라는 단어는 이전 주석에서 제외되었습니다. 그래서 ... PHP 5.6.26-0 + deb8u1로 코드를 테스트했으며 mcrypt_encrypt()는 경고를 던지거나 FALSE를 반환합니다. – haba713