2020年9月13日日曜日

LinuxのPowerShellでハッシュ値を求めてみたら

ハッシュ値の取得でハマった

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を使用する方が良さそうですね。

0 件のコメント:

コメントを投稿