<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

學習使用 8 種 Linux 原生命令或第三方實用程序來生成隨機密碼

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

學習使用 8 種 Linux 原生命令或第三方實用程序來生成隨機密碼。

在這篇文章中,我們將引導你通過幾種不同的方式在 Linux 終端中生成隨機密碼。其中幾種利用原生 Linux 命令,另外幾種則利用極易在 Linux 機器上安裝的第三方工具或實用程序實現。在這里我們利用像openssl,dd,md5sum,tr,urandom這樣的原生命令和 mkpasswd,randpw,pwgen,spw,gpg,xkcdpass,diceware,revelation,keepaasx,passwordmaker 這樣的第三方工具。

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

使用 mkpasswd 實用程序生成密碼

mkpasswd在基于 RHEL 的系統上隨expect軟件包一起安裝。在基于 Debian 的系統上mkpasswd則在軟件包whois中。直接安裝mkpasswd軟件包將會導致錯誤:

RHEL 系統:軟件包 mkpasswd 不可用。

Debian 系統:錯誤:無法定位軟件包 mkpasswd。

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

運行mkpasswd來獲得密碼

root@kerneltalks# mkpasswd << on RHEL

zt*hGW65c

root@kerneltalks# mkpasswd teststring << on Ubuntu

XnlrKxYOJ3vik

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

使用 openssl 生成密碼

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

root@kerneltalks# openssl rand -base64 10

nU9LlHO5nsuUvw==

這里我們使用 base64 編碼隨機函數,最后一個數字參數表示長度。

使用 urandom 生成密碼

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

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

UiXtr0NAOSIkqtjK4c0X

使用 dd 命令生成密碼

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

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

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

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

F8c3a4joS+a3BdPN9C++

使用 md5sum 生成密碼

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

root@kerneltalks# date |md5sum

4d8ce5c42073c7e9ca4aeffd3d157102-

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

使用 pwgen 生成密碼

pwgen 軟件包在類似 EPEL 軟件倉庫(LCTT 譯注:企業版 Linux 附加軟件包)中。pwgen 更專注于生成可發音的密碼,但它們不在英語詞典中,也不是純英文的。標準發行版倉庫中可能并不包含這個工具。安裝這個軟件包然后運行 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

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

使用 gpg 工具生成密碼

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

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

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

mL8i+PKZ3IuN6a7a

這里我們傳了生成隨機字節序列選項(--gen-random),質量為 1(第一個參數),次數 12 (第二個參數)。選項--armor保證以base64編碼輸出。

使用 xkcdpass 生成密碼

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

學習使用 8 種 Linux 原生命令或第三方實用程序來生成隨機密碼

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

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

現在運行 xkcdpass 命令,將會隨機給出你幾個像下面這樣的字典單詞:

root@kerneltalks# xkcdpass

broadside unpadded osmosis statistic cosmetics lugged

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

root@kerneltalks# xkcdpass |md5sum

45f2ec9b3ca980c7afbd100268c74819-

root@kerneltalks# xkcdpass |md5sum

ad79546e8350744845c001d8836f2ff2-

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11001

    瀏覽量

    206848
  • 密碼
    +關注

    關注

    8

    文章

    185

    瀏覽量

    30281
  • OpenSSL
    +關注

    關注

    0

    文章

    20

    瀏覽量

    8595

原文標題:八種在 Linux 上生成隨機密碼的方法

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

收藏 人收藏

    評論

    相關推薦

    Labview如何內嵌操作第三方EXE程序!

    自己在網上搜了下相關資料,能把第三方EXE內嵌進入容器里,但是有個問題,這個第三方軟件必須手動拖到容器正中間,手動最大化。請問有什么方法可以自動實現嗎? 下圖是我內嵌的POLL 軟件。如圖!
    發表于 04-18 14:26

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

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

    allegro第三方生成網表如何實現與allegro pcb交互設計

    allegro第三方生成網表如何實現與allegro pcb交互設計
    發表于 10-28 10:37

    關于通過第三方軟件生成LabVIEW安裝程序的問題

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

    Linux生成密碼命令有哪些?

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

    第三方dll調用問題?。?!

    第三方dll,沒有.h,labview怎么實現調用,dll可以用VS打開,類庫說明也有
    發表于 05-11 09:14

    Linux生成隨機密碼的方法

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

    國內知名第三方檢測認證機構排名

    的檢測機構介入,成熟的第三方檢測機構介入商品檢測在十九世紀中葉已經很普遍了,并成為一自覺的商業行為。目前中國已經成為了全球貿易大國,經濟實力躍居世界第二,強勁的對外貿易增長態勢促進了檢測行業的不斷
    發表于 07-19 16:57

    關于LabVIEW調用第三方exe,如何去控制第三方exe按鈕的問題

    我想調用第三方的exe,但并沒有給出任何接口,就單單一個exe程序,通過查資料得出可以用window自帶的user32.dll可以控制第三方的軟件,通過FindWindowA函數找到該軟件句柄,通過
    發表于 08-12 16:37

    請教LABVIEW怎么讀取第三方測量儀器電腦軟件測量結果數據

    直接從第三方軟件窗口顯示畫面把數據抓取出來生成報告,然后傳入MES系統,請各位師傅提供一下方案與經驗 非常感謝
    發表于 12-13 21:07

    請教LABVIEW怎么讀取第三方測量儀器電腦軟件測量結果數據

    直接從第三方軟件窗口顯示畫面把數據抓取出來生成報告,然后傳入MES系統,請各位師傅提供一下方案與經驗 非常感謝
    發表于 12-21 11:50

    頭文件中包含第三方文件

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

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

    labview 控制第三方軟件界面控件等,如操控燒錄軟件等除了模擬鼠標和鍵盤來實現之后,還可以考慮另外一方式,使用窗口句柄來直接操作程序如下面圖片實例,操作串口助手,修改串口和波特
    發表于 11-16 16:00

    如何借助第三方庫函數完成一個綜合程序設計

    通過學習opencv圖像庫編程,了解如何借助第三方庫函數完成一個綜合程序設計。
    發表于 12-23 08:11

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

    被開發者使用優化,能夠提升應用的豐富性和可操作性。組件效果展示組件中可以通過操作圖片、裁切框、按鈕,最終實現在圖片中裁切部分區域并進行顯示的效果,組件的運行效果如圖1所示。3、鴻蒙開源第三方組件
    發表于 03-23 09:53
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>