md5sumとPHPやPerlなどでのmd5実装の違いではまった--わけない

ものすごく初歩的なところでハマって数日時間をつぶしてしまった事件。md5の値をちょっと確認したいとき、コマンドのmd5sumを使うことはよくある。たとえば以下のようなコマンドだ。

$ echo 'https://setting-tool.net/' | md5sum
b64ee1b9599f3a68622abf0708fa1edd  -

ところが、このmd5値を元にしたPHPやPerlの実装系では期待した動作にならず、何かしらバグがあるのではないかと実装系のソースを追いかけまわした。

ひととりチェックをして問題ないことを確認して、もう一度原点に戻ってみようと思った時に、echoに気が付いた。

echoコマンドは通常改行を付与するので、上記のコマンドは「https://setting-tool.net/+改行」文字例のmd5である。つまり本来は以下のように実行しなければならない。

$ echo -n 'https://setting-tool.net/' | md5sum
c5201bebe3f6da700cb48e7e506818fd  -

というわけでご注意を。