国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python實現(xiàn)對稱加密、數(shù)字簽名、數(shù)字證書頒發(fā)

這篇具有很好參考價值的文章主要介紹了python實現(xiàn)對稱加密、數(shù)字簽名、數(shù)字證書頒發(fā)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一.開發(fā)目的:

理解開源密碼庫實現(xiàn)的基本架構(gòu),熟悉對稱算法的加解密函數(shù)封裝與調(diào)用,并能能夠利用開源設(shè)計接口進行二次封裝,并實現(xiàn)一個界面友好,功能正確的采用對稱算法的文件加解密工具。

二.開發(fā)環(huán)境:
  • 硬件環(huán)境:

    處理器:Intel?Core?i5-1035G1 CPU @1.00GHz 1.19GHz2?

  • 軟件環(huán)境:

    操作系統(tǒng):windows 10操作系統(tǒng)

    開發(fā)工具:python3.9 + pycharm2021.2.1

三.開發(fā)步驟和重點代碼介紹:

(1)確定開發(fā)工具:

我通過仔細閱讀openssl的源碼之后,發(fā)現(xiàn)python中關(guān)于文件加解密的庫crypto和cryptography在底層都是用openssl實現(xiàn)的文件加解密,我恰好對python比較熟悉,就決定用python實現(xiàn)。

(2)UI設(shè)計:

在python中,thinter庫是一個比較簡單好用的UI庫,在本次實驗中,我的UI都是用這個庫完成的。比如程序中涉及的所有文件路徑的讀取,我都是從UI界面直接進行讀取的,最終程序界面如下:

python 簽發(fā)證書,對稱加密,數(shù)字簽名,數(shù)字證書,密碼學(xué),網(wǎng)絡(luò)安全

(3)使用AES-CBC模式實現(xiàn)對于任意文件的加密:

AES為分組加密算法,把明文每128位分成一組,每次加密一組數(shù)據(jù),直到加密完整個明文。如果說明文的分組不夠128位,需要填充。這里我的密鑰選擇256位的,初始向量IV是128位的。

經(jīng)分析,我們的密鑰不能從系統(tǒng)直接隨機產(chǎn)生后,便開始對文件進行加密,因為我們還要考慮到用戶口令。所以在這里,我通過將系統(tǒng)產(chǎn)生的256位的隨機密鑰和用戶輸入的口令拼接,然后對它們進行sha256的哈希得到256位的隨機加密密鑰:

python 簽發(fā)證書,對稱加密,數(shù)字簽名,數(shù)字證書,密碼學(xué),網(wǎng)絡(luò)安全

因為要實現(xiàn)對于任意文件的加密,所以程序?qū)ξ募且远M制形式讀取的,然后對讀取到的二進制文件進行AES-CBC加密,完成加密后對加密文件,加密密鑰等進行保存:

python 簽發(fā)證書,對稱加密,數(shù)字簽名,數(shù)字證書,密碼學(xué),網(wǎng)絡(luò)安全

  • 示例:

    在這里,我對一個桌面上的txt文件進行了加密:

    python 簽發(fā)證書,對稱加密,數(shù)字簽名,數(shù)字證書,密碼學(xué),網(wǎng)絡(luò)安全

    在對應(yīng)的文件夾生成了一下文件:

    python 簽發(fā)證書,對稱加密,數(shù)字簽名,數(shù)字證書,密碼學(xué),網(wǎng)絡(luò)安全

    這里保存了本次加密的初始向量,系統(tǒng)和用戶口令拼接生成的256位的密鑰以及系統(tǒng)產(chǎn)生的256位的隨機密鑰。這樣當用戶解密文件的時候,當用戶輸入口令時,系統(tǒng)會將用戶口令和系統(tǒng)產(chǎn)生的隨機密鑰進行拼接并做sha256的哈希,用生成的密鑰進行解密。

    下面是加密之后的文件內(nèi)容:

    python 簽發(fā)證書,對稱加密,數(shù)字簽名,數(shù)字證書,密碼學(xué),網(wǎng)絡(luò)安全

    如果是圖片加密的話,則顯示無法查看:

    python 簽發(fā)證書,對稱加密,數(shù)字簽名,數(shù)字證書,密碼學(xué),網(wǎng)絡(luò)安全

    python 簽發(fā)證書,對稱加密,數(shù)字簽名,數(shù)字證書,密碼學(xué),網(wǎng)絡(luò)安全

(4)對加密的文件進解密:

文件解密,我們要選擇要解密的文件,然后輸入用戶口令,選擇要保存的文件夾,如果解密成功,頁面會顯示解密成功,如果是用戶口令錯誤,則會顯示口令錯誤。

python 簽發(fā)證書,對稱加密,數(shù)字簽名,數(shù)字證書,密碼學(xué),網(wǎng)絡(luò)安全

這里選擇之前加密的圖片文件,顯示解密成功:

python 簽發(fā)證書,對稱加密,數(shù)字簽名,數(shù)字證書,密碼學(xué),網(wǎng)絡(luò)安全

在對應(yīng)的文件夾下生成了如下文件,并可以查看:

python 簽發(fā)證書,對稱加密,數(shù)字簽名,數(shù)字證書,密碼學(xué),網(wǎng)絡(luò)安全

(5)數(shù)字證書的頒發(fā):

數(shù)字證書通過可信任的證書頒發(fā)機構(gòu),保證了通信雙方的身份認證,也解決了公鑰分發(fā)問題。數(shù)字證書里面包括頒發(fā)者的信息,被頒發(fā)者的公鑰信息、身份信息、證書的序列號、證書的簽名算法以及該數(shù)字證書的有效期等等。在本次實驗中,我才用了自己給自己頒發(fā)數(shù)字證書的模式,來研究數(shù)字證書。

在python的cryptography庫中的x509實現(xiàn)了數(shù)字證書的頒發(fā)。在UI界面,我們需要申請人的身份信息以及公鑰信息,而我們自己的私鑰信息已經(jīng)被寫入到程序中,無須UI輸入。

首先讀取到用戶的公鑰信息并生成我們自己的公私鑰:

python 簽發(fā)證書,對稱加密,數(shù)字簽名,數(shù)字證書,密碼學(xué),網(wǎng)絡(luò)安全

然后利用x509模塊,實現(xiàn)數(shù)字證書的頒發(fā)并保存:

python 簽發(fā)證書,對稱加密,數(shù)字簽名,數(shù)字證書,密碼學(xué),網(wǎng)絡(luò)安全

  • 示例:

    下面是我用自己的私鑰給LZW頒發(fā)的數(shù)字證書,頁面顯示數(shù)字證書頒發(fā)成功:

    python 簽發(fā)證書,對稱加密,數(shù)字簽名,數(shù)字證書,密碼學(xué),網(wǎng)絡(luò)安全

    在相應(yīng)的文件夾下,我們看到如下文件:

    python 簽發(fā)證書,對稱加密,數(shù)字簽名,數(shù)字證書,密碼學(xué),網(wǎng)絡(luò)安全

    其中uni_public_key_pem并不是生成的文件,而是證書申請者的公鑰。里面的private_key和public_key是我的臨時公私鑰,而certificate是生成的數(shù)字證書,內(nèi)容如下:

    python 簽發(fā)證書,對稱加密,數(shù)字簽名,數(shù)字證書,密碼學(xué),網(wǎng)絡(luò)安全

(6)用私鑰實現(xiàn)數(shù)字簽名:

數(shù)字簽名采用非對稱密碼體制,發(fā)送者使用自己的私鑰對文件進行簽名,接收者使用發(fā)送者的公鑰進行簽名驗證。數(shù)字簽名解決了在消息認證碼中無法實現(xiàn)的抗抵賴性。如果對一份完整的文件進行數(shù)字簽名,相當于用私鑰進行了加密,如果文件很大,加密時間很長甚至對于某些實時性要求很高的場景不適用,所以我選擇對文件的哈希值進行數(shù)字簽名,在驗簽階段,只需要比較哈希值是否一致就可以。文件哈希采用sha256進行哈希。

在數(shù)字簽名的UI界面,我們需要選擇要簽名的文件,我的私鑰,以及對于簽名后的文件要保存的位置。

python 簽發(fā)證書,對稱加密,數(shù)字簽名,數(shù)字證書,密碼學(xué),網(wǎng)絡(luò)安全

  • 示例:

    這里我還是選擇對上面的txt文件進行數(shù)字簽名,頁面顯示簽名成功:

    python 簽發(fā)證書,對稱加密,數(shù)字簽名,數(shù)字證書,密碼學(xué),網(wǎng)絡(luò)安全

    在相應(yīng)的文件夾,我們可以看到對應(yīng)的簽名文件:

    python 簽發(fā)證書,對稱加密,數(shù)字簽名,數(shù)字證書,密碼學(xué),網(wǎng)絡(luò)安全

(7)簽名驗證:

因為我們在簽名的時候是對文件的哈希值進行簽名,所以在驗簽階段,我們只需要選擇原文件(這里的原文件是指簽名者連同簽名文件一起發(fā)過來的文件)和已簽名的文件,對原文件進行哈希,對已簽名的文件進行解密得到哈希,比較兩者的哈希值是否相等即可。

首先需要讀取三個文件:簽名者的公鑰,已簽名文件和原文件。

python 簽發(fā)證書,對稱加密,數(shù)字簽名,數(shù)字證書,密碼學(xué),網(wǎng)絡(luò)安全

接下來就是驗證簽名:

python 簽發(fā)證書,對稱加密,數(shù)字簽名,數(shù)字證書,密碼學(xué),網(wǎng)絡(luò)安全

這里我們對之前的簽名文件進行簽名驗證,頁面顯示驗證成功:

python 簽發(fā)證書,對稱加密,數(shù)字簽名,數(shù)字證書,密碼學(xué),網(wǎng)絡(luò)安全

如果我們選擇的文件是不正確的文件,則頁面顯示簽名驗證失敗:

python 簽發(fā)證書,對稱加密,數(shù)字簽名,數(shù)字證書,密碼學(xué),網(wǎng)絡(luò)安全

至此,本次的所有內(nèi)容已經(jīng)展示完畢。

四.注意事項:

(1)我覺得可以加入網(wǎng)絡(luò)通信功能,可利用socket實現(xiàn)。收發(fā)雙方如果都是利用該軟件,那么他們的傳輸協(xié)議等都是一致的,發(fā)送者可以將自己的秘密文件發(fā)送給對應(yīng)的接收者。如果以后有時間,我會加入該模塊并不斷完善系統(tǒng)。

(2)本實驗的對于文件加解密,簽名等的實現(xiàn),都是采取固定的模式,如果把這部分設(shè)置為用戶可選,效果會更好。

(3)目前程序?qū)τ谟脩艄借€都是存放在用戶自定義的文件夾,如果能夠?qū)崿F(xiàn)對于存放這些秘密文件的文件夾實現(xiàn)加密,系統(tǒng)便更加完善了。

(4)因源碼文件較多,如果需求可到這里下載https://download.csdn.net/download/weixin_63137680/87486255文章來源地址http://www.zghlxwxcb.cn/news/detail-641989.html

到了這里,關(guān)于python實現(xiàn)對稱加密、數(shù)字簽名、數(shù)字證書頒發(fā)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【安全】對稱加密、非對稱加密、數(shù)字簽名和CA是什么?

    【安全】對稱加密、非對稱加密、數(shù)字簽名和CA是什么?

    今天學(xué)習(xí)了關(guān)于網(wǎng)絡(luò)通信過程中的安全相關(guān)的知識,還有一些基礎(chǔ)的概念,現(xiàn)做以總結(jié),博客的圖示都是自己畫的,如果能夠有助于你的理解,請點個贊收藏一下~~ 目錄 對稱加密 非對稱加密算法 ?數(shù)字簽名和CA 證書的信任鏈 根身份證和自簽名 ? 對稱加密的一方(比如小藍)

    2023年04月08日
    瀏覽(20)
  • 一文搞懂對稱加密與非對稱加密(RSA)、信息摘要、數(shù)字簽名

    一文搞懂對稱加密與非對稱加密(RSA)、信息摘要、數(shù)字簽名

    目錄 一、對稱加密與非對稱加密 二、信息摘要 三、數(shù)字簽名 四、小練習(xí) 對稱加密: 加密和解密使用同一個秘鑰(如加密方式為+1,那解密方式為-1)常見的對稱加密算法:DES,AES,3DES等 非對稱加密: 加密和解密使用不同密鑰。兩個密鑰:公共密鑰和私有密鑰。通常將公鑰

    2024年02月16日
    瀏覽(24)
  • 軟考:中級軟件設(shè)計師:信息系統(tǒng)的安全屬性,對稱加密和非對稱加密,信息摘要,數(shù)字簽名技術(shù),數(shù)字信封與PGP

    軟考:中級軟件設(shè)計師:信息系統(tǒng)的安全屬性,對稱加密和非對稱加密,信息摘要,數(shù)字簽名技術(shù),數(shù)字信封與PGP

    提示:系列被面試官問的問題,我自己當時不會,所以下來自己復(fù)盤一下,認真學(xué)習(xí)和總結(jié),以應(yīng)對未來更多的可能性 關(guān)于互聯(lián)網(wǎng)大廠的筆試面試,都是需要細心準備的 (1)自己的科研經(jīng)歷, 科研內(nèi)容 ,學(xué)習(xí)的相關(guān)領(lǐng)域知識,要熟悉熟透了 (2)自己的實習(xí)經(jīng)歷,做了 什

    2024年02月10日
    瀏覽(22)
  • 軟考:中級軟件設(shè)計師-信息系統(tǒng)的安全屬性,對稱加密和非對稱加密,信息摘要,數(shù)字簽名技術(shù),數(shù)字信封與PGP

    軟考:中級軟件設(shè)計師-信息系統(tǒng)的安全屬性,對稱加密和非對稱加密,信息摘要,數(shù)字簽名技術(shù),數(shù)字信封與PGP

    提示:系列被面試官問的問題,我自己當時不會,所以下來自己復(fù)盤一下,認真學(xué)習(xí)和總結(jié),以應(yīng)對未來更多的可能性 關(guān)于互聯(lián)網(wǎng)大廠的筆試面試,都是需要細心準備的 (1)自己的科研經(jīng)歷, 科研內(nèi)容 ,學(xué)習(xí)的相關(guān)領(lǐng)域知識,要熟悉熟透了 (2)自己的實習(xí)經(jīng)歷,做了 什

    2024年04月22日
    瀏覽(58)
  • 算法2_非對稱加密算法之ECDSA(橢圓曲線數(shù)字簽名算法)

    算法2_非對稱加密算法之ECDSA(橢圓曲線數(shù)字簽名算法)

    ECDSA(橢圓曲線數(shù)字簽名算法) AES(高級加密標準): =對稱加密 ? 對業(yè)務(wù)數(shù)據(jù)進行加密,防止他人可以看見 ECDSA(橢圓曲線數(shù)字簽名算法):=非對稱加密算法(公鑰和私鑰) ? 驗證數(shù)據(jù)的真實性,防止業(yè)務(wù)數(shù)據(jù)被篡改 SHA(安全哈希算法)=哈希算法 1. 作用: 因為ECDSA橢圓曲線數(shù)字簽名算法獲得

    2024年02月02日
    瀏覽(60)
  • 安裝軟件和驅(qū)動程序需要微軟數(shù)字簽名無法安裝?數(shù)字簽名和數(shù)字證書區(qū)別

    安裝軟件和驅(qū)動程序需要微軟數(shù)字簽名無法安裝?數(shù)字簽名和數(shù)字證書區(qū)別

    1.安裝軟件和驅(qū)動程序需要微軟數(shù)字簽名無法安裝 windows安裝exe安裝包時: 1.1 ?解決方法: 1.2 ? ? ? ? ? 這個問題需要安裝驅(qū)動補丁進行更新驅(qū)動操作,如:Windows6.1-sha2補丁.msu 1.3 ? ? ? ? ? 這種屬于簽名問題,解決方法: 1..進入“控制面板”,查看方式為大圖標,點擊“

    2024年02月05日
    瀏覽(28)
  • Java - 數(shù)字簽名與數(shù)字證書

    Java - 數(shù)字簽名與數(shù)字證書

    SSL是一種安全協(xié)議,用于在網(wǎng)絡(luò)傳輸中提供數(shù)據(jù)加密、身份驗證和完整性保護。它基于傳輸層協(xié)議(如TCP),并為其提供加密和安全功能。 對稱加密和非對稱加密 : 對稱加密 :使用相同的密鑰進行加密和解密。 非對稱加密 :使用兩個密鑰:公鑰用于加密,私鑰用于解密。

    2024年01月24日
    瀏覽(31)
  • 一文看懂公鑰、私鑰、數(shù)字簽名、數(shù)字證書

    一文看懂公鑰、私鑰、數(shù)字簽名、數(shù)字證書

    好文章,記錄下來!源文地址:What is a Digital Signature? (youdzone.com) 1. ?鮑勃有兩把鑰匙,一把是公鑰,另一把是私鑰。 2. ?鮑勃把公鑰送給他的朋友們----帕蒂、道格、蘇珊----每人一把。 3. 蘇珊要給鮑勃寫一封保密的信。她寫完后用鮑勃的公鑰加密,就可以達到保密的效果。

    2024年02月09日
    瀏覽(19)
  • 安全算法(三)消息驗證碼、數(shù)字簽名和數(shù)字證書

    安全算法(三)消息驗證碼、數(shù)字簽名和數(shù)字證書

    主要介紹了消息驗證碼、數(shù)字簽名和數(shù)字證書三種加密方式。 消息認證碼 消息認證碼可以實現(xiàn)“認證”和“檢測篡改”這兩個功能。密文的內(nèi)容在傳輸過程中可能會被篡改,這會導(dǎo)致解密后的內(nèi)容發(fā)生變化,從而產(chǎn)生誤會。消息認證碼就是可以預(yù)防這種情況發(fā)生的機制。 假

    2024年01月22日
    瀏覽(19)
  • Https、CA證書、數(shù)字簽名

    Https、CA證書、數(shù)字簽名

    Https Http協(xié)議 Http協(xié)議是目前應(yīng)用比較多應(yīng)用層協(xié)議,瀏覽器對于Http協(xié)議已經(jīng)實現(xiàn)。Http協(xié)議基本的構(gòu)成部分有 請求行 : 請求報文的第一行 請求頭 : 從第二行開始為請求頭內(nèi)容的開始部分。每一個請求頭都是由K-V鍵值對組成。 請求體: 請求頭完成后以空行結(jié)束、從空行開始

    2024年02月12日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包