2017-06-05 49 views
3

我目前有一個正在生成的密碼,這是一個日期的散列。我想通過添加一些大寫字母,小寫字母,數字和特殊字符來增加此生成的密碼的安全性,所有字符的最小長度均爲10個字符。在Bash中創建密碼

我現在擁有的是以下。正如你所看到的,它將輸出分配給我的PASSWORD變量。

PASSWORD=$(date +%s | sha256sum | base64 | head -c 15) 

我不確定,如果我能做到這一點的內聯,或者,如果我需要我的bash腳本中創建一個功能,以適應?這甚至有可能嗎?

非常感謝提前。

+0

你目前擁有的東西很脆弱,因爲缺乏熵。熵等同於數據。這很容易被暴力強制。來自Cyrus的答案使用了一個更好的輸入熵源:/ dev/urandom。 – TheGreatContini

+0

另請參閱:https://stackoverflow.com/questions/30947873/random-password-generate-in-shell-script-with-one-special-character – codeforester

+0

我建議安裝和使用pwgen。 – ArturFH

回答

6

隨着trhead

password=$(tr -dc 'A-Za-z0-9!?%=' < /dev/urandom | head -c 10) 

echo "$password" 

輸出(例如):

 
k?lmyif6aE 

tr從Linux的特殊隨機設備/dev/urandom讀取通過stdin字節,並刪除所有字節/字符,但AZ,az09!?%=tr通過stdout發送它的輸出到head的標準輸入。 head在10個字節後削減輸出。

+0

這正是我所追求的。我可以請求外行解釋以上的條款嗎?我可以學習嗎? –

+1

@GraemeLeighfield:我已經更新了我的答案。 – Cyrus