如何透過 Arch Linux 命令列建立 md5 哈希?

如何透過 Arch Linux 命令列建立 md5 哈希?

在 Arch Linux 中,如何使用指令行為密碼建立單一 md5 雜湊值?當然,我知道有可用的安全密碼雜湊演算法,而 md5 則不然,但這只是實驗的一部分。

答案1

簡單echo來說就是md5sum。

在生成哈希之前,第一個結果將考慮字串末尾的換行符。

$ echo P@ssword1 | md5sum
0a43c426e3d6764fe1f3f7cbb3579eba  -

否則作為@AFH說明如果您不希望有換行符,請執行以下操作:

$ echo -n 'P@ssword1' | md5sum
d106b29303767527fc11214f1b325fb6  -

答案2

沒有一個答案提到,使用echo -n 'password' | …,您將把密碼寫入持久存儲,即您的歷史記錄。

您可以透過在命令前添加空格來避免這種情況,這取決於 shell(針對您的 shell 進行測試)。閱讀 shell 文件以了解如何處理此問題。

或者,您可以md5sum直接使用,運行md5sum,輸入密碼,然後輸入Ctrl+D。不要Enter在密碼和 之間點擊Ctrl+D,除非您想在雜湊中包含換行符號。

答案3

這是一個使用 openssl 的範例

echo -n 'stack overflow' | openssl md5
(stdin)= 481b8423202598ecfb233c5fa68caf68

如果有一天您需要不同的演算法,Openssl 會實作幾種不同的雜湊演算法。

答案4

似乎每個人都建議使用echo- 至少在大多數時候,謝天謝地,使用-n,這可以緩解它的問題(它在末尾打印換行符)。

echo不一定一致。您需要記住它有許多行為怪癖,並且系統之間可能不相容。最好是printf改用

因此,您應該使用

$ printf '%s' 'P@ssword1' | md5sum
d106b29303767527fc11214f1b325fb6  -
$

對於printf,如果您想在末尾添加換行符,則必須自己明確地添加它:

$ printf '%s\n' 'P@ssword1' | md5sum
0a43c426e3d6764fe1f3f7cbb3579eba  -
$ echo 'P@ssword1' | md5sum
0a43c426e3d6764fe1f3f7cbb3579eba  -
$

而不必要求不獲取它(並希望echo在稍後某個時刻恰好運行的系統上也能正常工作):

$ echo -n 'P@ssword1' | md5sum
d106b29303767527fc11214f1b325fb6  -
$

擴展這一點的怪癖echo我上面提到了,這裡有一些:

  • 它在不同系統上的運作方式有所不同。許多現代系統支援-n告訴echo不要用換行符號終止輸出,但有些系統可能不支援。如果您想實際列印怎麼辦-n?某些實作實際上可能會有所不同設定在外殼或環境中。
  • 它以特殊方式處理或可能不處理某些字元序列(特別是反斜線轉義字元)。在密碼中包含這些內容並非完全不合理,且 POSIX 不保證 echo 的任何行為(其行為具體是不明確的) 如果第一個參數-n或其任何參數包含反斜線。

上面連結的有關使用 printf 而不是 echo 的問題的答案還有更多,如果您好奇的話,還有更多閱讀的連結。

相關內容