ハッシュ値の取得でハマった
Kali Linuxで文字列のハッシュ値を取得する処理でハマったので整理する。
~$ echo -n test | md5sum
098f6bcd4621d373cade4e832627b4f6 -
~$ echo test | md5sum
d8e8fca2dc0f896fd7cb4cb0031ba249 -
この二つでハッシュ値が変わるのは、echoコマンドのオプション-n
にあります。
このオプションは文字列の最後に改行を入れません。
さて、なぜハマったかですが、PowerShellはLinuxにもインストールできますので、Kali LinuxでPowerShellのスクリプトを作成していました。
Linux への PowerShell のインストール
PowerShellでハッシュ値を取得する処理を記載していたのですが、コマンドの結果は以下の通りです。
PS > echo -n test | md5sum
d8e8fca2dc0f896fd7cb4cb0031ba249 -
PS > echo test | md5sum
d8e8fca2dc0f896fd7cb4cb0031ba249 -
いずれもハッシュ値はd8e8fca2dc0f896fd7cb4cb0031ba249
となります。
では、echoのAliasを見てみます。
PS > alias echo
CommandType Name Version Source
----------- ---- ------- ------
Alias echo -> Write-Output
echoのAliasはWrite-Output なので、Powershellでecho test | md5sum
を実行したら以下のコマンドと同一になります。
Write-Output test | md5sum
d8e8fca2dc0f896fd7cb4cb0031ba249 -
Write-Outputのオプションを見ましたが、最後の改行を出力させないオプションは無いようです。
簡単にハッシュ値を求めるにはBashを使用する方が良さそうですね。