0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

學(xué)習(xí)使用 8 種 Linux 原生命令或第三方實(shí)用程序來生成隨機(jī)密碼

Linux愛好者 ? 2018-02-08 08:26 ? 次閱讀

學(xué)習(xí)使用 8 種 Linux 原生命令或第三方實(shí)用程序來生成隨機(jī)密碼。

在這篇文章中,我們將引導(dǎo)你通過幾種不同的方式在 Linux 終端中生成隨機(jī)密碼。其中幾種利用原生 Linux 命令,另外幾種則利用極易在 Linux 機(jī)器上安裝的第三方工具或?qū)嵱贸绦驅(qū)崿F(xiàn)。在這里我們利用像openssl,dd,md5sum,tr,urandom這樣的原生命令和 mkpasswd,randpw,pwgen,spw,gpg,xkcdpass,diceware,revelation,keepaasx,passwordmaker 這樣的第三方工具。

其實(shí)這些方法就是生成一些能被用作密碼的隨機(jī)字母字符串。隨機(jī)密碼可以用于新用戶的密碼,不管用戶基數(shù)有多大,這些密碼都是獨(dú)一無二的。話不多說,讓我們來看看 8 種不同的在 Linux 上生成隨機(jī)密碼的方法吧。

使用 mkpasswd 實(shí)用程序生成密碼

mkpasswd在基于 RHEL 的系統(tǒng)上隨expect軟件包一起安裝。在基于 Debian 的系統(tǒng)上mkpasswd則在軟件包whois中。直接安裝mkpasswd軟件包將會導(dǎo)致錯(cuò)誤:

RHEL 系統(tǒng):軟件包 mkpasswd 不可用。

Debian 系統(tǒng):錯(cuò)誤:無法定位軟件包 mkpasswd。

所以按照上面所述安裝他們的父軟件包,就沒問題了。

運(yùn)行mkpasswd來獲得密碼

root@kerneltalks# mkpasswd << on RHEL

zt*hGW65c

root@kerneltalks# mkpasswd teststring << on Ubuntu

XnlrKxYOJ3vik

這個(gè)命令在不同的系統(tǒng)上表現(xiàn)得不一樣,所以工作方式各異。你也可以通過參數(shù)來控制長度等選項(xiàng),可以查閱 man 手冊來探索。

使用 openssl 生成密碼

幾乎所有 Linux 發(fā)行版都包含 openssl。我們可以利用它的隨機(jī)功能來生成可以用作密碼的隨機(jī)字母字符串。

root@kerneltalks# openssl rand -base64 10

nU9LlHO5nsuUvw==

這里我們使用 base64 編碼隨機(jī)函數(shù),最后一個(gè)數(shù)字參數(shù)表示長度。

使用 urandom 生成密碼

設(shè)備文件 /dev/urandom 是另一個(gè)獲得隨機(jī)字符串的方法。我們使用 tr 功能并裁剪輸出來獲得隨機(jī)字符串,并把它作為密碼。

root@kerneltalks# strings /dev/urandom |tr -dc A-Za-z0-9 | head -c20; echo

UiXtr0NAOSIkqtjK4c0X

使用 dd 命令生成密碼

我們甚至可以使用 /dev/urandom 設(shè)備配合 dd 命令 來獲取隨機(jī)字符串。

root@kerneltalks# dd if=/dev/urandom bs=1 count=15|base64 -w 0

15+0records in

15+0records out

15bytes(15B)copied,5.5484e-05s,270kB/s

QMsbe2XbrqAc2NmXp8D0

我們需要將結(jié)果通過 base64 編碼使它能被人類可讀。你可以使用數(shù)值來獲取想要的長度。想要獲得更簡潔的輸出的話,可以將“標(biāo)準(zhǔn)錯(cuò)誤輸出”重定向到 /dev/null。簡潔輸出的命令是:

root@kerneltalks# dd if=/dev/urandom bs=1 count=15 2>/dev/null|base64 -w 0

F8c3a4joS+a3BdPN9C++

使用 md5sum 生成密碼

另一種獲取可用作密碼的隨機(jī)字符串的方法是計(jì)算 MD5 校驗(yàn)值!校驗(yàn)值看起來確實(shí)像是隨機(jī)字符串組合在一起,我們可以用作密碼。確保你的計(jì)算源是個(gè)變量,這樣的話每次運(yùn)行命令時(shí)生成的校驗(yàn)值都不一樣。比如 date !date 命令 總會生成不同的輸出。

root@kerneltalks# date |md5sum

4d8ce5c42073c7e9ca4aeffd3d157102-

在這里我們將 date 命令的輸出通過 md5sum 得到了校驗(yàn)和!你也可以用 cut 命令 裁剪你需要的長度。

使用 pwgen 生成密碼

pwgen 軟件包在類似 EPEL 軟件倉庫(LCTT 譯注:企業(yè)版 Linux 附加軟件包)中。pwgen 更專注于生成可發(fā)音的密碼,但它們不在英語詞典中,也不是純英文的。標(biāo)準(zhǔn)發(fā)行版?zhèn)}庫中可能并不包含這個(gè)工具。安裝這個(gè)軟件包然后運(yùn)行 pwgen 命令行。Boom !

root@kerneltalks# pwgen

thu8Iox7 ahDeeQu8 Eexoh0ai oD8oozie ooPaeD9t meeNeiW2 Eip6ieph Ooh1tiet

cootad7O Gohci0vo wah9Thoh Ohh3Ziur Ao1thoma ojoo6aeW Oochai4v ialaiLo5

aic2OaDa iexieQu8 Aesoh4Ie Eixou9ph ShiKoh0i uThohth7 taaN3fuu Iege0aeZ

cah3zaiW Eephei0m AhTh8guo xah1Shoo uh8Iengo aifeev4E zoo4ohHa fieDei6c

aorieP7k ahna9AKe uveeX7Hi Ohji5pho AigheV7u Akee9fae aeWeiW4a tiex8Oht

你的終端會呈現(xiàn)出一個(gè)密碼列表!你還想要什么呢?好吧。你還想再仔細(xì)探索的話, pwgen 還有很多自定義選項(xiàng),這些都可以在 man 手冊里查閱到。

使用 gpg 工具生成密碼

GPG 是一個(gè)遵循 OpenPGP 標(biāo)準(zhǔn)的加密及簽名工具。大部分 gpg 工具都預(yù)先被安裝好了(至少在我的 RHEL7 上是這樣)。但如果沒有的話你可以尋找 gpg 或 gpg2 軟件包并安裝它。

使用下面的命令以從 gpg 工具生成密碼。

root@kerneltalks# gpg --gen-random --armor 1 12

mL8i+PKZ3IuN6a7a

這里我們傳了生成隨機(jī)字節(jié)序列選項(xiàng)(--gen-random),質(zhì)量為 1(第一個(gè)參數(shù)),次數(shù) 12 (第二個(gè)參數(shù))。選項(xiàng)--armor保證以base64編碼輸出。

使用 xkcdpass 生成密碼

著名的極客幽默網(wǎng)站xkcd,發(fā)表了一篇非常有趣的文章,是關(guān)于好記但又復(fù)雜的密碼的。所以xkcdpass工具就受這篇文章啟發(fā),做了這樣的工作!這是一個(gè) Python 軟件包,可以在Python 的官網(wǎng)上找到它。

學(xué)習(xí)使用 8 種 Linux 原生命令或第三方實(shí)用程序來生成隨機(jī)密碼

這里是安裝步驟和我的測試 RHEL 服務(wù)器的輸出,以供參考。

root@kerneltalks# wget https://pypi.python.org/packages/b4/d7/3253bd2964390e034cf0bba227db96d94de361454530dc056d8c1c096abc/xkcdpass-1.14.3.tar.gz#md5=5f15d52f1d36207b07391f7a25c7965f

--2018-01-2319:09:17--https://pypi.python.org/packages/b4/d7/3253bd2964390e034cf0bba227db96d94de361454530dc056d8c1c096abc/xkcdpass-1.14.3.tar.gz

Resolving pypi.python.org(pypi.python.org)...151.101.32.223,2a04:4e42:8::223

Connecting topypi.python.org(pypi.python.org)|151.101.32.223|:443...connected.

HTTP request sent,awaiting response...200OK

Length: 871848(851K)[binary/octet-stream]

Saving to: ‘xkcdpass-1.14.3.tar.gz’

100%[==============================================================================================================================>]871,848 --.-K/s in0.01s

2018-01-2319:09:17(63.9MB/s) - ‘xkcdpass-1.14.3.tar.gz’saved[871848/871848]

root@kerneltalks# tar -xvf xkcdpass-1.14.3.tar.gz

xkcdpass-1.14.3/

xkcdpass-1.14.3/examples/

xkcdpass-1.14.3/examples/example_import.py

xkcdpass-1.14.3/examples/example_json.py

xkcdpass-1.14.3/examples/example_postprocess.py

xkcdpass-1.14.3/LICENSE.BSD

xkcdpass-1.14.3/MANIFEST.in

xkcdpass-1.14.3/PKG-INFO

xkcdpass-1.14.3/README.rst

xkcdpass-1.14.3/setup.cfg

xkcdpass-1.14.3/setup.py

xkcdpass-1.14.3/tests/

xkcdpass-1.14.3/tests/test_list.txt

xkcdpass-1.14.3/tests/test_xkcdpass.py

xkcdpass-1.14.3/tests/__init__.py

xkcdpass-1.14.3/xkcdpass/

xkcdpass-1.14.3/xkcdpass/static/

xkcdpass-1.14.3/xkcdpass/static/eff-long

xkcdpass-1.14.3/xkcdpass/static/eff-short

xkcdpass-1.14.3/xkcdpass/static/eff-special

xkcdpass-1.14.3/xkcdpass/static/fin-kotus

xkcdpass-1.14.3/xkcdpass/static/ita-wiki

xkcdpass-1.14.3/xkcdpass/static/legacy

xkcdpass-1.14.3/xkcdpass/static/spa-mich

xkcdpass-1.14.3/xkcdpass/xkcd_password.py

xkcdpass-1.14.3/xkcdpass/__init__.py

xkcdpass-1.14.3/xkcdpass.1

xkcdpass-1.14.3/xkcdpass.egg-info/

xkcdpass-1.14.3/xkcdpass.egg-info/dependency_links.txt

xkcdpass-1.14.3/xkcdpass.egg-info/entry_points.txt

xkcdpass-1.14.3/xkcdpass.egg-info/not-zip-safe

xkcdpass-1.14.3/xkcdpass.egg-info/PKG-INFO

xkcdpass-1.14.3/xkcdpass.egg-info/SOURCES.txt

xkcdpass-1.14.3/xkcdpass.egg-info/top_level.txt

root@kerneltalks# cd xkcdpass-1.14.3

root@kerneltalks# python setup.py install

running install

running bdist_egg

running egg_info

writing xkcdpass.egg-info/PKG-INFO

writing top-level names toxkcdpass.egg-info/top_level.txt

writing dependency_links toxkcdpass.egg-info/dependency_links.txt

writing entry points toxkcdpass.egg-info/entry_points.txt

reading manifest file'xkcdpass.egg-info/SOURCES.txt'

reading manifest template'MANIFEST.in'

writing manifest file'xkcdpass.egg-info/SOURCES.txt'

installing library code tobuild/bdist.linux-x86_64/egg

running install_lib

running build_py

creating build

creating build/lib

creating build/lib/xkcdpass

copying xkcdpass/xkcd_password.py -> build/lib/xkcdpass

copying xkcdpass/__init__.py -> build/lib/xkcdpass

creating build/lib/xkcdpass/static

copying xkcdpass/static/eff-long -> build/lib/xkcdpass/static

copying xkcdpass/static/eff-short -> build/lib/xkcdpass/static

copying xkcdpass/static/eff-special -> build/lib/xkcdpass/static

copying xkcdpass/static/fin-kotus -> build/lib/xkcdpass/static

copying xkcdpass/static/ita-wiki -> build/lib/xkcdpass/static

copying xkcdpass/static/legacy -> build/lib/xkcdpass/static

copying xkcdpass/static/spa-mich -> build/lib/xkcdpass/static

creating build/bdist.linux-x86_64

creating build/bdist.linux-x86_64/egg

creating build/bdist.linux-x86_64/egg/xkcdpass

copying build/lib/xkcdpass/xkcd_password.py -> build/bdist.linux-x86_64/egg/xkcdpass

copying build/lib/xkcdpass/__init__.py -> build/bdist.linux-x86_64/egg/xkcdpass

creating build/bdist.linux-x86_64/egg/xkcdpass/static

copying build/lib/xkcdpass/static/eff-long -> build/bdist.linux-x86_64/egg/xkcdpass/static

copying build/lib/xkcdpass/static/eff-short -> build/bdist.linux-x86_64/egg/xkcdpass/static

copying build/lib/xkcdpass/static/eff-special -> build/bdist.linux-x86_64/egg/xkcdpass/static

copying build/lib/xkcdpass/static/fin-kotus -> build/bdist.linux-x86_64/egg/xkcdpass/static

copying build/lib/xkcdpass/static/ita-wiki -> build/bdist.linux-x86_64/egg/xkcdpass/static

copying build/lib/xkcdpass/static/legacy -> build/bdist.linux-x86_64/egg/xkcdpass/static

copying build/lib/xkcdpass/static/spa-mich -> build/bdist.linux-x86_64/egg/xkcdpass/static

byte-compiling build/bdist.linux-x86_64/egg/xkcdpass/xkcd_password.py toxkcd_password.pyc

byte-compiling build/bdist.linux-x86_64/egg/xkcdpass/__init__.py to__init__.pyc

creating build/bdist.linux-x86_64/egg/EGG-INFO

copying xkcdpass.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO

copying xkcdpass.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO

copying xkcdpass.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO

copying xkcdpass.egg-info/entry_points.txt -> build/bdist.linux-x86_64/egg/EGG-INFO

copying xkcdpass.egg-info/not-zip-safe -> build/bdist.linux-x86_64/egg/EGG-INFO

copying xkcdpass.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO

creating dist

creating'dist/xkcdpass-1.14.3-py2.7.egg'andadding'build/bdist.linux-x86_64/egg'toit

removing'build/bdist.linux-x86_64/egg'(andeverything under it)

Processing xkcdpass-1.14.3-py2.7.egg

creating /usr/lib/python2.7/site-packages/xkcdpass-1.14.3-py2.7.egg

Extracting xkcdpass-1.14.3-py2.7.eggto /usr/lib/python2.7/site-packages

Adding xkcdpass1.14.3toeasy-install.pth file

Installing xkcdpass script to /usr/bin

Installed /usr/lib/python2.7/site-packages/xkcdpass-1.14.3-py2.7.egg

Processing dependencies forxkcdpass==1.14.3

Finished processing dependencies forxkcdpass==1.14.3

現(xiàn)在運(yùn)行 xkcdpass 命令,將會隨機(jī)給出你幾個(gè)像下面這樣的字典單詞:

root@kerneltalks# xkcdpass

broadside unpadded osmosis statistic cosmetics lugged

你可以用這些單詞作為其他命令,比如 md5sum 的輸入,來獲取隨機(jī)密碼(就像下面這樣),甚至你也可以用每個(gè)單詞的第 N 個(gè)字母來生成你的密碼!

root@kerneltalks# xkcdpass |md5sum

45f2ec9b3ca980c7afbd100268c74819-

root@kerneltalks# xkcdpass |md5sum

ad79546e8350744845c001d8836f2ff2-

或者你甚至可以把所有單詞串在一起作為一個(gè)超長的密碼,不僅非常好記,也不容易被電腦程序攻破。

Linux 上還有像 Diceware、 KeePassX、 Revelation、 PasswordMaker 這樣的工具,也可以考慮用來生成強(qiáng)隨機(jī)密碼。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207888
  • 密碼
    +關(guān)注

    關(guān)注

    8

    文章

    187

    瀏覽量

    30390
  • OpenSSL
    +關(guān)注

    關(guān)注

    0

    文章

    20

    瀏覽量

    8624

原文標(biāo)題:八種在 Linux 上生成隨機(jī)密碼的方法

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    Labview如何內(nèi)嵌操作第三方EXE程序!

    自己在網(wǎng)上搜了下相關(guān)資料,能把第三方EXE內(nèi)嵌進(jìn)入容器里,但是有個(gè)問題,這個(gè)第三方軟件必須手動(dòng)拖到容器正中間,手動(dòng)最大化。請問有什么方法可以自動(dòng)實(shí)現(xiàn)嗎? 下圖是我內(nèi)嵌的POLL 軟件。如圖!
    發(fā)表于 04-18 14:26

    如何把第三方庫加到PROTEUS中?

    新手求教,弱弱的問下,下了一個(gè)第三方庫,說是要先安裝,再添加路徑,可是我下來的第三方庫沒有看到安裝文件啊。還望指教如何添加!
    發(fā)表于 06-15 22:32

    allegro第三方生成網(wǎng)表如何實(shí)現(xiàn)與allegro pcb交互設(shè)計(jì)

    allegro第三方生成網(wǎng)表如何實(shí)現(xiàn)與allegro pcb交互設(shè)計(jì)
    發(fā)表于 10-28 10:37

    關(guān)于通過第三方軟件生成LabVIEW安裝程序的問題

    我想通過第三方軟件生成LabVIEW安裝程序,那么我該從哪里找到NI的附加安裝程序呢?求大神解答啊!困擾我好久了,不知道該找哪些。。
    發(fā)表于 09-30 16:09

    Linux生成密碼命令有哪些?

    隨機(jī)密碼,除此之外還可以使用第三方工具進(jìn)行生成,如mkpasswd、randpw、pwgen、spw,gpg、xkcdpass等,有興趣的可以了解一下!
    發(fā)表于 03-02 18:53

    第三方dll調(diào)用問題?。。?/a>

    第三方dll,沒有.h,labview怎么實(shí)現(xiàn)調(diào)用,dll可以用VS打開,類庫說明也有
    發(fā)表于 05-11 09:14

    Linux生成隨機(jī)密碼的方法

    隨機(jī)密碼,除此之外還可以使用第三方工具進(jìn)行生成,如mkpasswd、randpw、pwgen、spw,gpg、xkcdpass等,有興趣的可以了解一下!
    發(fā)表于 11-20 11:02

    國內(nèi)知名第三方檢測認(rèn)證機(jī)構(gòu)排名

    的檢測機(jī)構(gòu)介入,成熟的第三方檢測機(jī)構(gòu)介入商品檢測在十九世紀(jì)中葉已經(jīng)很普遍了,并成為一自覺的商業(yè)行為。目前中國已經(jīng)成為了全球貿(mào)易大國,經(jīng)濟(jì)實(shí)力躍居世界第二,強(qiáng)勁的對外貿(mào)易增長態(tài)勢促進(jìn)了檢測行業(yè)的不斷
    發(fā)表于 07-19 16:57

    請教LABVIEW怎么讀取第三方測量儀器電腦軟件測量結(jié)果數(shù)據(jù)

    直接從第三方軟件窗口顯示畫面把數(shù)據(jù)抓取出來生成報(bào)告,然后傳入MES系統(tǒng),請各位師傅提供一下方案與經(jīng)驗(yàn) 非常感謝
    發(fā)表于 12-13 21:07

    請教LABVIEW怎么讀取第三方測量儀器電腦軟件測量結(jié)果數(shù)據(jù)

    直接從第三方軟件窗口顯示畫面把數(shù)據(jù)抓取出來生成報(bào)告,然后傳入MES系統(tǒng),請各位師傅提供一下方案與經(jīng)驗(yàn) 非常感謝
    發(fā)表于 12-21 11:50

    頭文件中包含第三方文件

    macrocmake如果源文件(例如 CPP)中包含第三方頭文件,但是頭文件(例如 hpp)中不包含該第三方文件頭,采用 PRIVATE。如果源文件和頭文件中都包含該第三方文件頭,采用 PUBLIC
    發(fā)表于 08-18 08:10

    labview 控制第三方軟件界面控件的方式

    labview 控制第三方軟件界面控件等,如操控?zé)涇浖瘸四M鼠標(biāo)和鍵盤來實(shí)現(xiàn)之后,還可以考慮另外一方式,使用窗口句柄來直接操作程序如下面圖片實(shí)例,操作串口助手,修改串口和波特
    發(fā)表于 11-16 16:00

    鴻蒙開源第三方組件資料合集

    被開發(fā)者使用優(yōu)化,能夠提升應(yīng)用的豐富性和可操作性。組件效果展示組件中可以通過操作圖片、裁切框、按鈕,最終實(shí)現(xiàn)在圖片中裁切部分區(qū)域并進(jìn)行顯示的效果,組件的運(yùn)行效果如圖1所示。3、鴻蒙開源第三方組件
    發(fā)表于 03-23 09:53

    銀行和第三方支付:戀愛進(jìn)行時(shí)

    銀行和第三方支付:戀愛進(jìn)行時(shí)   北京2010年1月8日電  -- 從第三方支付誕生之時(shí)起,銀行與第三方支付之間的競合關(guān)系
    發(fā)表于 01-09 08:08 ?636次閱讀

    華為MateBook13第三方Linux版上架 售價(jià)5399元

    近日,華為MateBook 13第三方Linux版上架華為商城,售價(jià)5399元(i5/8GB/512GB),目前是到貨通知狀態(tài)。
    的頭像 發(fā)表于 09-16 09:12 ?7800次閱讀