久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

    1. <style id="76ofp"></style>

      <style id="76ofp"></style>
      <rt id="76ofp"></rt>
      <form id="76ofp"><optgroup id="76ofp"></optgroup></form>
      1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

        手機站
        千鋒教育

        千鋒學習站 | 隨時隨地免費學

        千鋒教育

        掃一掃進入千鋒手機站

        領取全套視頻
        千鋒教育

        關(guān)注千鋒學習站小程序
        隨時隨地免費學習課程

        當前位置:首頁  >  技術(shù)干貨  > Python 模塊之輸入不可見的密碼

        Python 模塊之輸入不可見的密碼

        來源:千鋒教育
        發(fā)布人:xqq
        時間: 2023-11-07 04:30:20 1699302620

        密碼對程序員來說尤其重要。你不應該在不加密的情況下存儲它們,而且你也不應該在用戶輸入密碼的時候顯示出輸入的內(nèi)容。當我決定要提高我的筆記本電腦的安全性時,這對我來說變得特別重要。我對我的家目錄進行了加密,但當我登錄后,任何以純文本形式存儲在配置文件中的密碼都有可能暴露在偷窺者面前。

        具體來說,我使用一個名為Mutt的應用作為我的電子郵件客戶端。它可以讓我在我的Linux終端中閱讀和撰寫電子郵件,但通常它希望在其配置文件中有一個密碼。我限制了我的Mutt配置文件的權(quán)限,以便只有我可以看到它,我是我的筆記本電腦的唯一用戶,所以我并不真的擔心經(jīng)過認證的用戶會無意中看到我的配置文件。相反,我想保護自己,無論是為了吹噓還是為了版本控制,不至于心不在焉地把我的配置發(fā)布到網(wǎng)上,把我的密碼暴露了。此外,雖然我不希望我的系統(tǒng)上有不受歡迎的客人,但我確實想確保入侵者不能通過對我的配置上運行cat就獲得我的密碼。

        pythonGnuPG

        Python模塊python-gnupg是gpg應用的一個Python封裝。該模塊的名字是python-gnupg,你不要把它和一個叫做gnupg的模塊混淆。

        GnuPG(GPG)是Linux的默認加密系統(tǒng),我從2009年左右開始使用它。我對它很熟悉,對它的安全性有很高的信任。

        我決定將我的密碼輸入Mutt的最好方法是將我的密碼存儲在一個加密的GPG文件中,創(chuàng)建一個提示我的GPG密碼來解鎖這個加密文件,然后將密碼交給Mutt(實際上是交給offlineimap命令,我用它來同步我的筆記本和電子郵件服務器)。

        用Python獲取用戶輸入是非常容易的。對input進行調(diào)用,無論用戶輸入什么,都會被存儲為一個變量:

        print("Enterpassword:")

        myinput=input()

        print("Youentered:",myinput)

        我的問題是,當我根據(jù)密碼提示在終端上輸入密碼時,我所輸入的所有內(nèi)容對任何從我肩膀上看過去或滾動我的終端歷史的人來說都是可見的:

        $./test.py

        Enterpassword:my-Complex-Passphrase

        用getpass輸入不可見密碼

        正如通常的情況一樣,有一個Python模塊已經(jīng)解決了我的問題。這個模塊是getpass4,從用戶的角度來看,它的行為和input完全一樣,只是不顯示用戶輸入的內(nèi)容。

        你可以用pip安裝這兩個模塊:

        $python-mpipinstall--userpython-gnupggetpass4

        下面是我的Python腳本,用于創(chuàng)建密碼提示:

        #!/usr/bin/envpython

        #bySethKenlon

        #GPLv3

        #installdeps:

        #python3-mpipinstall--userpython-gnupggetpass4

        importgnupg

        importgetpass

        frompathlibimportPath

        defget_api_pass():

        homedir=str(Path.home())

        gpg=gnupg.GPG(gnupghome=os.path.join(homedir,".gnupg"),use_agent=True)

        passwd=getpass.getpass(prompt="EnteryourGnuPGpassword:",stream=None)

        withopen(os.path.join(homedir,'.mutt','pass.gpg'),'rb')asf:

        apipass=(gpg.decrypt_file(f,passphrase=passwd))

        f.close()

        returnstr(apipass)

        if__name__=="__main__":

        apipass=get_api_pass()

        print(apipass)

        如果你想試試,把文件保存為password_prompt.py。如果你使用offlineimap并想在你自己的密碼輸入中使用這個方案,那么把它保存到某個你可以在.offlineimaprc文件中指向offlineimap的位置(我使用~/.mutt/password_prompt.py)。

        測試密碼提示

        要查看腳本的運行情況,你首先必須創(chuàng)建一個加密文件(我假設你已經(jīng)設置了GPG):

        $echo"helloworld">pass

        $gpg--encryptpass

        $mvpass.gpg~/.mutt/pass.gpg

        $rmpass

        現(xiàn)在運行Python腳本:

        $python~/.mutt/password_prompt.py

        EnteryourGPGpassword:

        helloworld

        當你輸入時沒有任何顯示,但只要你正確輸入GPG口令,你就會看到該測試信息。

        將密碼提示符與offlineimap整合起來

        我需要將我的新提示與offlineimap命令結(jié)合起來。我為這個腳本選擇了Python,因為我知道offlineimap可以對Python程序進行調(diào)用。如果你是一個offlineimap用戶,你會明白唯一需要的“整合”是在你的.offlineimaprc文件中改變兩行。

        首先,添加一行引用Python文件的內(nèi)容:

        pythonfile=~/.mutt/password_prompt.py

        然后將.offlineimaprc中的remotepasseval行改為調(diào)用password_prompt.py中的get_api_pass()函數(shù):

        remotepasseval=get_api_pass()

        配置文件中不再有密碼!

        安全問題

        在你的個人電腦上考慮安全問題有時會讓人覺得很偏執(zhí)。你的SSH配置是否真的需要限制為600?隱藏在名為.mutt的無關(guān)緊要的電子郵件密碼真的重要嗎?也許不重要。

        然而,知道我沒有把敏感數(shù)據(jù)悄悄地藏在我的配置文件里,使我更容易把文件提交到公共Git倉庫,把片段復制和粘貼到支持論壇,并以真實好用的配置文件的形式分享我的知識。僅就這一點而言,安全性的提高使我的生活更加輕松。而且有這么多好的Python模塊可以提供幫助,這很容易實現(xiàn)。

        以上內(nèi)容為大家介紹了Python模塊之輸入不可見的密碼,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓機構(gòu):千鋒教育。http://m.2667701.com/

        tags: python培訓
        聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
        10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
        請您保持通訊暢通,專屬學習老師24小時內(nèi)將與您1V1溝通
        免費領取
        今日已有369人領取成功
        劉同學 138****2860 剛剛成功領取
        王同學 131****2015 剛剛成功領取
        張同學 133****4652 剛剛成功領取
        李同學 135****8607 剛剛成功領取
        楊同學 132****5667 剛剛成功領取
        岳同學 134****6652 剛剛成功領取
        梁同學 157****2950 剛剛成功領取
        劉同學 189****1015 剛剛成功領取
        張同學 155****4678 剛剛成功領取
        鄒同學 139****2907 剛剛成功領取
        董同學 138****2867 剛剛成功領取
        周同學 136****3602 剛剛成功領取
        相關(guān)推薦HOT
        杨浦区| 巫山县| 深泽县| 临泽县| 开封县| 宁武县| 德昌县| 肥乡县| 东城区| 黄龙县| 林芝县| 华宁县| 澄城县| 蓬溪县| 资兴市| 漠河县| 临沧市| 朝阳区| 建湖县| 赤城县| 高邮市| 翁源县| 白沙| 罗山县| 沙雅县| 铁岭市| 乐清市| 灯塔市| 东港市| 沙湾县| 达孜县| 略阳县| 胶南市| 文安县| 黄龙县| 内黄县| 两当县| 阳新县| 五家渠市| 嘉义市| 四平市|