閱讀645 返回首頁    go 阿裏雲 go 技術社區[雲棲]


如何在 Linux 中產生、加密或解密隨機密碼

如何在 Linux 中產生、加密或解密隨機密碼

我們一直積極地提供有關 Linux 技巧的係列文章,如果你錯過了這個係列的最新文章,你或許可以去訪問下麵的鏈接。

在這篇文章中,我們將分享一些有趣 Linux 技巧,內容是有關如何產生隨機密碼以及加密或解密這些經過加鹽或沒有加鹽處理的密碼。

安全是數字時代中的一個主要話題。在電腦,email,雲端,手機,文檔和其他的場合中,我們都會使用到密碼。眾所周知,選擇密碼的基本原則是 “易記,難猜”。考慮過使用基於機器自動生成的密碼嗎?相信我,Linux 非常擅長這方麵的工作。

1. 使用命令 pwgen 來生成一個長度為 10 個字符的獨特的隨機密碼。假如你還沒有安裝 pwgen,請使用 Apt 或 YUM 等包管理器來安裝它。


  1. $ pwgen 10 1

生成一個獨特的隨機密碼

生成一個獨特的隨機密碼

一口氣生成若幹組長度為 50 個字符的唯一的隨機密碼!


  1. $ pwgen 50

生成多組隨機密碼

生成多組隨機密碼

2. 你還可以使用 makepasswd 來每次生成一個給定長度的獨特的隨機密碼。在你把玩 makepasswd 命令之前,請確保你已經安裝了它。如若沒有安裝它,試試使用 Apt 或 YUM 包管理器來安裝 makepasswd這個軟件包。

生成一個長度為 10 個字符的隨機密碼。該命令產生的密碼的長度默認為 10。


  1. $ makepasswd

使用 makepasswd 生成獨特的密碼

使用 makepasswd 生成獨特的密碼

生成一個長度為 50 個字符的隨機密碼。


  1. $ makepasswd --char 50

生成長度為 50 的密碼

生成長度為 50 的密碼

生成 7 個長度為 20 個字符的隨機密碼。


  1. $ makepasswd --char 20 --count 7

3. 使用帶“鹽”的 Crypt(注:這裏應該指的是一個函數,可以參考這裏 ) 來加密一個密碼。提供手動或自動添加 “鹽”。

對於那些不清楚  的意義的人,這裏的 “鹽” 指的是一個隨機數據,它作為密碼生成函數的一個額外的輸入, 目的是保護密碼免受詞典攻擊。

在執行下麵的操作前,請確保你已經安裝了 mkpasswd

下麵的命令將帶 “鹽” 加密一個密碼。“鹽” 的值是隨機自動生成的。所以每次你運行下麵的命令時,都將產生不同的輸出,因為它每次接受了隨機取值的 “鹽”。


  1. $ mkpasswd tecmint

使用 Crypt 來加密密碼

使用 Crypt 來加密密碼

現在讓我們來手動定義 “鹽” 的值。每次它將產生相同的結果。請注意你可以輸入任何你想輸入的值來作為 “鹽” 的值。


  1. $ mkpasswd tecmint -s tt

帶鹽加密密碼

帶“鹽”加密密碼

另外, mkpasswd 還是交互式的,假如你在命令中沒有提供密碼,它將主動詢問你來輸入密碼。

4. 使用 aes-256-cbc 加密算法並使用帶“鹽”的密碼(如 “tecmint”) 加密一個字符串(如 “Tecmint-is-a-Linux-Community”)。


  1. # echo Tecmint-is-a-Linux-Community | openssl enc -aes-256-cbc -a -salt -pass pass:tecmint

在 Linux 中加密一個字符串

在 Linux 中加密一個字符串

在上麵例子中, echo 命令的輸出通過管道傳遞給了 openssl 命令,使得該輸出通過加密編碼方式(enc:Encoding with Cipher ) 所加密,這個過程中使用了 aes-256-cbc 加密算法,並附帶了密碼 (tecmint) 和 “鹽” 。

5. 使用 openssl 命令的 -aes-256-cbc 解密選項來解密上麵的字符串。


  1. # echo U2FsdGVkX18Zgoc+dfAdpIK58JbcEYFdJBPMINU91DKPeVVrU2k9oXWsgpvpdO/Z | openssl enc -aes-256-cbc -a -d -salt -pass pass:tecmint

在 Linux 中解密字符串

在 Linux 中解密字符串

現在就是這些內容了。

保持聯係,保持連接,敬請關注。不要忘了在下麵的評論中提供給我們您有價值的反饋。

原文發布時間:2015-05-22

本文來自雲棲合作夥伴“linux中國”

最後更新:2017-05-22 16:02:46

  上一篇:go  Java並發中正確使用volatile
  下一篇:go  非阻塞同步算法實戰(一)