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

現(xiàn)代密碼學(xué)實驗五:簽名算法

這篇具有很好參考價值的文章主要介紹了現(xiàn)代密碼學(xué)實驗五:簽名算法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、實驗?zāi)康?/p>

1.掌握數(shù)字簽名的基本原理,理解RSA算法如何提供數(shù)字簽名。

2.熟悉實驗環(huán)境和加密軟件CrypTool 1.4(CrypTool 2)的使用。

3.編寫代碼實現(xiàn)簽名算法。

二、實驗內(nèi)容

  1. 運行CrypTool 1.4(CrypTool 2),使用RSA算法對消息進行簽名操作,選擇公鑰PK=(e,N),私鑰為sk=(d,N)。例如:

消息:

Out of all cryptographic primitives, the digital signature using public key cryptography is considered as very important and useful tool to achieve information security. Apart from ability to provide non-repudiation of message, the digital signature also provides message authentication and data integrity.

密鑰:e = 11

N =

97837973726418359868516951718991281325771149750958732944765111213631328027493925740023000937277990315891588119835562940190113563334615471147089645563941484459898854377253031679968434226000865737244299665393453851802313775580309976978804698982229486068546397607971083305570968358870209409102684170827187712579

d =

53366167487137287201009246392177062541329718045977490697144606116526178924087595858194364147606176535940866247183034331012789216364335711534776170307604435275621882890925722486791216663911766481240927473604083681494108652553529557950472379863877351129463207267185120618342084129306558631987155442108022251891

  1. 編程實現(xiàn)RSA/ElGamal簽名算法并測試簽名和驗證過程。要求消息頭部包含作者的姓名拼音,并通過哈希函數(shù)SHA-1得到消息摘要,對摘要進行簽名,編程語言不限。
  • 實驗步驟

實驗(1):

  1. 通過課堂與課本得知,RSA簽名和實驗4中的RSA算法正好相反,解密對應(yīng)于簽名,且解密的密鑰為加密者的私鑰。加密對應(yīng)于驗證,于是打開Cryptool2.1使用RSA解密算法生成16進制文件。如圖一、二。

cryptool,密碼學(xué),安全,區(qū)塊鏈

?

圖一:簽名過程

cryptool,密碼學(xué),安全,區(qū)塊鏈

?

圖二:驗證過程

實驗(2):

1、運用python自帶的庫生成sha-1消息摘要(圖三):

cryptool,密碼學(xué),安全,區(qū)塊鏈

?

圖三:sha-1實現(xiàn)

2、將實驗4的RSA算法實現(xiàn)倒置,解密對應(yīng)簽名,加密對應(yīng)驗證(如圖四,五)

cryptool,密碼學(xué),安全,區(qū)塊鏈

?

圖四:解密對應(yīng)簽名

cryptool,密碼學(xué),安全,區(qū)塊鏈

?

圖五:加密對應(yīng)驗證

  • 實驗結(jié)果

實驗(1):

數(shù)字簽名:

EF 2B D8 A6 0B 36 A3 88 4F 85 56 B0 E0 22 D2 02 1D 21 AE 4F 0D A6 BB 81 F7 CA 82 7B 31 E0 27 82 DE F9 A7 85 CE 25 21 4E 74 C6 00 C3 11 EF E7 7A 89 12 F5 EB DD 9F 92 14 C3 9A 2B 3D 07 9B 68 27 09 AD EA 1F 41 24 7A B2 1A C6 CA C9 9E D9 F4 FA A7 10 A9 F7 73 8D 49 4B 73 36 E0 1C A8 9D 7A D8 63 44 B5 7B 1A BD 83 00 82 0C 8C DA DD B4 1F 36 5C 94 D6 5B 76 B1 01 F8 63 49 25 A8 E7 74 7D 76 48 47 7A 81 C3 FF 67 47 39 A0 63 A1 9F 54 FB F2 86 C5 03 D1 69 84 65 FB 1F D5 09 CB B4 72 46 C6 A1 61 25 C2 60 EC 8E 19 3E 59 4E 27 11 A1 04 ED D9 53 9B 41 38 8E C3 DA A3 FE B6 C2 E8 F5 2D ED A0 60 AB 25 C9 87 E1 8F 5E 81 45 01 14 FF 61 BA 35 EC D0 F0 5F 51 01 7F 3B 76 B3 45 E8 60 F8 30 64 A3 1E E5 03 66 02 43 08 F3 31 2A 61 47 CC 56 95 5A E7 D1 CD EC B1 EF 15 80 24 16 EC E0 EC 19 28 95 11 CB F9 CD 04 8C 9C E5 DA 40 AA CF 93 97 71 F5 EE EB 4E C5 E6 98 F6 C1 61 6C CF 0C F5 96 A4 22 05 81 D1 42 9E BB 98 D4 A1 97 C8 3B D5 DB BC E8 76 14 5A 9D 4B 05 3B 49 1B DC B6 51 F0 B3 DA 5B A0 F8 ED 29 57 85 25 A8 77 63 AC C9 D6 C1 58 18 83 D8 9A F8 33 D0 42 DA C8 B9 21 24 C1 EF 27 7B 8E AB 9A 52 40 C0 C0 C3 27 39 32 DD 9F 1D 37 C2 38 BA 35 DC E8 0E 45 19 5E 93 41 96 43 25

RSA加密后生成的密文:

Out of all cryptographic primitives, the digital signature using public key cryptography is considered as very important and useful tool to achieve information security. Apart from ability to provide non-repudiation of message, the digital signature also provides message authentication and data integrity.

與原文相同,驗證成功。

實驗(2):

私鑰對消息摘要進行簽名后,運用公鑰驗證簽名,結(jié)果與摘要相同,驗證成功?。ㄈ鐖D六)

cryptool,密碼學(xué),安全,區(qū)塊鏈

?

圖六:運行結(jié)果

  • 實驗心得

本次實驗的綜合性較高,運用了前幾課的知識,包括sha-1算法生成消息驗證碼,RSA算法實現(xiàn)不對稱加密,在運用其不對稱加密的性質(zhì)實現(xiàn)數(shù)字簽名,而這一切都是基于復(fù)雜的離散對數(shù)問題。Sha-1算法生成固定長度但又對明文具有強抗碰撞性,使得對摘要生成的簽名長度很短都能達到較好的驗證效果。文章來源地址http://www.zghlxwxcb.cn/news/detail-783947.html

  • 附錄 (程序代碼)
from random import randint

from datetime import datetime

import hashlib

"""判斷是否是素數(shù)"""

def is_sushu(sushu):

??? for i in range(2,sushu):

??????? if sushu % i == 0:

??????????? return False

??? return True



"""隨機生成指定范圍的大素數(shù)"""

def Create_Sushu():

??? while True:

??????? sushu = randint(100,1000 )#下限越大,加密越安全,此處考慮計算時間,取值較小

??????? if is_sushu(sushu):

??????????? return sushu



"""計算歐拉函數(shù)"""

def Oula(sushu1 , sushu2):

??? return (sushu1-1)*(sushu2-1)



"""判斷是否互質(zhì)"""

def Is_Huzhi(int_min,int_max):

??? for i in range(2,int_min+1):

??????? if int_min % i == 0 and int_max % i == 0:

??????????? return False

??? return True



"""計算公鑰,直接計算編程較簡單,此處考慮了計算效率的優(yōu)化"""

def Creat_E(oula):

??? top = oula

??? while True:

??????? i = randint(2,top)

??????? for e in range(i,top):

??????????? if Is_Huzhi(e,oula):

??????????? ????return e

??????? top = i



"""計算私鑰"""

def Compute_D(oula,e):

??? k = 1

??? while ( k*oula+1 )% e != 0:

??????? k+=1

??? return int((k*oula+1)/e)



"""將字符串轉(zhuǎn)成ASCII"""

def Transfer_To_Ascii(messages):

??? result = []

??? for message in messages:

??????? result.append(? ord(message) )

??? return result



"""將列表轉(zhuǎn)化成字符串"""

def Transfer_To_String(string_list):

??? string = ''.join('%s' %id for id in string_list)?????? #有數(shù)字不能直接join .join('%s' %id for id in list1))

??? return string





if __name__ == "__main__":

??? """

??? p、q為大素數(shù)

??? n=p*q

??? oula = p-1* q-1

??? e 為公鑰

??? d 為私鑰

??? """



??? print("通信開始,正在計算公鑰與私鑰...")

??? time_start = datetime.now()

??? p = Create_Sushu()

??? q = p

??? while p ==q :

??????? q = Create_Sushu()

??? n = p * q

??? oula = Oula(p, q)

??? e = Creat_E(oula)

??? d = Compute_D(oula,e)

??? time_end = datetime.now()

??? print(f"計算完成,用時{str(time_end -time_start)}")

??? print(f"公鑰:n = {str(n)} , e = {str(e)}")

??? print(f"私鑰:n = {str(n)} , d = {str(d)}")





??? m = input('待簽名信息:')

??? hash = hashlib.sha1(m.encode("utf-8")).hexdigest()



??? c_list= Transfer_To_Ascii(hash)

??? print(f"sha-1消息摘要為:{hash}")

??? print("正在簽名...")

??? decode_messages=[]

??? for c in c_list:

??????? decode_message = c**d%n

??????? decode_messages.append(chr(decode_message))

??? m_list = Transfer_To_Ascii(decode_messages)

??? print(f"簽名信息:{m_list}")



??? c_list = []

??? for m in m_list:

??????? c = m**e%n

??????? c_list.append(chr(c))

??? print("正在驗證...")

??? print(f"收到的摘要為:{Transfer_To_String(c_list)}")

??? if Transfer_To_String(c_list) == hash:

??????? print("驗證成功?。?!")

到了這里,關(guān)于現(xiàn)代密碼學(xué)實驗五:簽名算法的文章就介紹完了。如果您還想了解更多內(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)文章

  • 現(xiàn)代密碼學(xué)基礎(chǔ)(2)

    現(xiàn)代密碼學(xué)基礎(chǔ)(2)

    目錄 一. 介紹 二. 舉例:移位密碼 (1)密文概率 (2)明文概率 三. 舉例:多字母的移位密碼 四. 完美安全 五. 舉例:雙子母的移位密碼 六. 從密文角度看完美安全 七. 完美保密性質(zhì) 在密碼學(xué)中,K代表密鑰,M代表明文,C代表密文,每個都有各自的概率分布。 密鑰是通過密

    2024年01月17日
    瀏覽(17)
  • 密碼學(xué) | 多重簽名:基本概念

    目錄 摘要 1? 什么是多重簽名? 2? 多重簽名的作用 2.1? 聯(lián)名賬戶 2.2? 提高安全性 2.3? 秘鑰備份 3? 比特幣的多重簽名 3.1? 對比一 3.2? 對比二 3.2.1? 線性性 3.2.2? 不可延展性 3.2.3? 安全性證明 3.2.4? 效率高、占用空間少 ?? 原文: 多重簽名:Schnorr 協(xié)議與 ECDSA 協(xié)議 - 知乎

    2024年04月25日
    瀏覽(25)
  • 《現(xiàn)代密碼學(xué)》學(xué)習(xí)筆記——第三章 分組密碼 [二] AES

    《現(xiàn)代密碼學(xué)》學(xué)習(xí)筆記——第三章 分組密碼 [二] AES

    版本 密鑰長度 分組長度 迭代輪數(shù) AES-128 4 4 10 AES-192 6 4 12 AES-256 8 4 14 (1)字節(jié)代換(SubByte) (2)行移位(ShiftRow) (3)列混合(MixColumn) (4)密鑰加(AddRoundKey) 1.字節(jié)代換 ??字節(jié)代換是非線性變換,獨立地對狀態(tài)的每個字節(jié)進行。代換表(S-Box)是可逆的。 ??將

    2024年02月05日
    瀏覽(24)
  • 第四章 公鑰密碼 —— 現(xiàn)代密碼學(xué)(楊波)課后題答案解析

    4. 用推廣的Euclid算法求67 mod 119的逆元 解:初始化:(1,0,119), (0,1,67) 1:Q=119/67=1,(0,1,67) , (1,-1,52) 2:Q=67/52=1,(1,-1,52), (-1,2,15) 3:Q=52/15=3,(-1,2,15), (4,-7,7) 4:Q=15/7=2,(4,-7,7), (-9,16,1) 所以67 -1 ?mod 119=16 10.設(shè)通信雙方使用RSA加密體制,接收方的公開鑰是( e , n )=(5,35),接收到

    2024年02月05日
    瀏覽(26)
  • 第二章 流密碼 —— 現(xiàn)代密碼學(xué)(楊波)課后題答案解析

    1.3級線性反饋移位寄存器在 c 3 =1時可有4種線性反饋函數(shù),設(shè)其初始狀態(tài)為( a 1 , a 2 , a 3 )=(1,0,1),求各線性反饋函數(shù)的輸出序列及周期。 解:此時線性反饋函數(shù)可表示為 f ( a 1 , a 2 , a 3 )= a 1 ? c 2 a 2 ? c 1 a 3 當 c 1 =0, c 2 =0時, f ( a 1 , a 2 , a 3 )= a 1 ? c 2 a 2 ? c 1 a 3 =

    2024年02月05日
    瀏覽(26)
  • 【現(xiàn)代密碼學(xué)基礎(chǔ)】詳解完美安全與不可區(qū)分安全

    【現(xiàn)代密碼學(xué)基礎(chǔ)】詳解完美安全與不可區(qū)分安全

    目錄 一. 介紹 二. 不可區(qū)分性試驗 三. 不可區(qū)分性與完美安全 四. 例題 五. 小結(jié) 敵手完美不可區(qū)分,英文寫做perfect adversarial indistinguishability,其中adversarial經(jīng)常被省略不寫,在密碼學(xué)的論文中經(jīng)常被簡稱為IND安全。 完美不可區(qū)分與香農(nóng)的完美安全是類似的。該定義來源于一

    2024年01月21日
    瀏覽(29)
  • 密碼學(xué)基礎(chǔ)(三)——數(shù)字簽名與證書

    密碼學(xué)基礎(chǔ)(三)——數(shù)字簽名與證書

    數(shù)字簽名:又叫公鑰數(shù)字簽名,或者電子印章。 數(shù)字信息社會用于取代傳統(tǒng)社會手寫簽名的一種公鑰加密領(lǐng)域的技術(shù)實現(xiàn)。 數(shù)字簽名其實就是非對稱加密的私鑰加密,公鑰解密的過程。 數(shù)字證書用來證明公鑰擁有者的身份,驗證數(shù)據(jù)來源,驗證數(shù)據(jù)是否被修改。 數(shù)字證書中

    2024年02月16日
    瀏覽(23)
  • 現(xiàn)代密碼學(xué)第四版楊波著-期末復(fù)習(xí)匯總

    現(xiàn)代密碼學(xué)第四版楊波著-期末復(fù)習(xí)匯總

    我將用一整天突擊,嶄新的一本書,從0到期末80+,(僅針對本校逆天考點進行總結(jié)) 完本總結(jié):總計歷經(jīng)兩天半,共計15小時,總計30+頁,僅帶來個人的復(fù)習(xí)思路與心路歷程 寫本博客原因? 馬上期末考試,整本書從來沒有看過,嘗試0基礎(chǔ)一天學(xué)完,突破自己。 網(wǎng)上沒有完

    2024年02月09日
    瀏覽(25)
  • 【密碼學(xué)】 一篇文章講透數(shù)字簽名

    【密碼學(xué)】 一篇文章講透數(shù)字簽名

    ?? 數(shù)字簽名(又稱公鑰數(shù)字簽名)是只有信息的發(fā)送者才能產(chǎn)生的別人無法偽造的一段數(shù)字串,這段數(shù)字串同時也是對信息的發(fā)送者發(fā)送信息真實性的一個有效證明。它是一種類似寫在紙上的普通的物理簽名,但是在使用了公鑰加密領(lǐng)域的技術(shù)來實現(xiàn)的,用于鑒別數(shù)字信息

    2024年02月06日
    瀏覽(24)
  • 第六章 消息認證和哈希函數(shù) —— 現(xiàn)代密碼學(xué)(楊波)課后題答案解析

    第六章 消息認證和哈希函數(shù) —— 現(xiàn)代密碼學(xué)(楊波)課后題答案解析

    1.6.1.3節(jié)的數(shù)據(jù)認證算法是由CBC模式的DES定義的,其中初始向量取為0,試說明使用CFB模式也可獲得相同的結(jié)果。 解:設(shè)需認證的數(shù)據(jù)分為64比特長的分組, D 1 , D 2 ,…, D N ,其中 D N 不夠64比特則右邊補0,由題設(shè),數(shù)據(jù)認證算法相當于在CBC模式中初始向量取為0,并按如下關(guān)系

    2024年02月05日
    瀏覽(53)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包