2016-10-13 26 views
2

https://www.tools4noobs.com/online_tools/encrypt/は、キー "1234567890abcdef"とペイロード "encrypt this"の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のキーサイズでは、ウェブサイトとPHPコードの両方の出力が一致します。

DESキーサイズは、マニュアルでは56ビットと記載されています。 DES固有のキーサイズに関する有用な背景を以下に示します。

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

noobs4toolsウェブサイトで使用されるキー:あなたのコードで使用される

"12345678" 

はキー:

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

この違いは、あなたに異なる出力を提供します。

したがって、のキーは、他の番号またはデータ形式に変換されません。ページスクリプトで既に正しくフォーマットされた値を提供することを期待しています。

+0

http://php.net/manual/en/function.mcrypt-encrypt.phpによると無効なキーとサイズは受け入れられなくなりましたmcrypt_encrypt()は警告を出します入力が無効な場合はFALSEを返します。以前はキーとIVに '\ 0'バイトを次の有効なサイズに埋め込んでいました。 (PHP 5.6.0以降)。 私はPHP 5.6.26-0 + deb8u1でコードをテストし、mcrypt_encrypt()は警告を出したりFALSEを返します。 – haba713

+0

ありがとう@ haba713あなたのコメントは正しいです、私は私の答えを更新しました。 – Martin

+0

申し訳ありません@Martin。 "not"という言葉は私の前のコメントから除外されています... ... PHP 5.6.26-0 + deb8u1でコードをテストし、mcrypt_encrypt()は警告をスローしたりFALSEを返します。 – haba713

関連する問題