Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Linux系統教程 >> Linux教程 >> 小技巧:在Linux下生成crypt加密密碼

小技巧:在Linux下生成crypt加密密碼

日期:2017/2/7 9:21:55      編輯:Linux教程

當我們用紅帽Kickstart腳本或useradd或其他方式寫東西的時候,經常會需要用到crypt命令加密生成的密碼格式。那麼,有沒有其他方式可以生成這種格式的密碼?事實上,方法有很多。

  我們可以用mkpasswd命令:這個命令就是用來生成crypt格式的密碼的:

 

  mkpasswd

  輸入命令後,程序會要求輸入一個密碼,然後生成crypt格式的字符串。

  如果用Apache Web服務器,那麼也可以用htpasswd:

 

  htpasswd -nd user

  用戶名(user)叫什麼都無所謂,我們關注的是密碼。這個命令會輸出一個user:password格式的字符串,直接把password字段復制下來就ok了。

  有OpenSSL的話,可以使用openssl命令:

 

  openssl passwd -crypt myPassword

  把上面命令中的myPassword用你想用的密碼字符串代替。

  其他還有一些需要把命令在命令行中直接輸入的方式,不過這種做法有個問題,就是在ps命令中可以看到密碼,同時密碼也會被記錄入shell歷史。

  不過這個問題是有解決辦法的:用腳本,或者語言解釋器。

  比如使用Perl:

 

    perl -e "print crypt('password','sa');"

  Perl需要一個加密鹽,如這裡使用了sa(salt指加密中用到的隨機字符串,用不同的salt可以生成不同的加密結果)。

  Ruby也一樣需要加密鹽:

 

    ruby -e 'print "password".crypt("JU"); print("\n");'

  PHP也可以:

 

    php -r "print(crypt('password','JU') . \"\n\");"

  需要注意的是,如果不使用加密鹽(如上面命令中的JU),那麼輸出的字符串將不是crypt加密格式,而是MD5加密格式的。所以,加密鹽其實是必須的參數。

  Python需要導入crypt庫並使用加密鹽:

 

    python -c 'import crypt; print crypt.crypt("password","Fx")'

  這裡的加密鹽是Fx。

  數據庫也可以生成crypt密碼。比如用MySQL:

 

    echo "select encrypt('password');" | mysql

  另外,Tcl,Ubuntu下的trf,還有Lua的lua-crypt插件也可以實現相同的目的。

  歡迎補充其他的方式!

Copyright © Windows教程網 All Rights Reserved