日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

密码编码学之数字签名

發布時間:2025/3/15 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 密码编码学之数字签名 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

  • 一、數字簽名
    • 1、 數字簽名關鍵部分的描述
    • 2、 數字簽名的要求
    • 3、 DSA數字簽名算法
    • 4、 橢圓曲線數字簽名算法(ECDSA)
    • 5、 RSA-PSS數字簽名算法

原創不易,轉載請幫注明出處: https://blog.csdn.net/jackone12347/article/details/122882686

一、數字簽名

1、 數字簽名關鍵部分的描述

數字簽名具有認證功能,下面是數字簽名關鍵部分的描述:

Bob: 對消息M使用Hash函數計算得到hash值h; 使用Bob的私鑰,對h使用數字簽名生成算法生成簽名S; 將S附在消息M的后面。Alice: 使用Hash函數,計算消息M的hash值h,hash函數對通訊雙方是已知的; 使用Bob提供的公鑰,對簽名進行解密,如果計算出來的hash值,與h相同,則簽名驗證通過。

2、 數字簽名的要求

數據簽名需要滿足一些條件和基本特征:

1、簽名必須是與消息相關的二進制位串 (一般簽名文件直接打開是亂碼) 2、簽名必須使用發送方獨有的信息,以防止偽造和否認 (一般添加公司或者企業的獨有信息 如公司的名稱、地址、郵箱等) 3、產生數據簽名要非常容易 4、識別和驗證簽名也要非常容易 5、偽造數據簽名在計算上不可行

3、 DSA數字簽名算法

下面是歸納的DSA算法:

下面是RSA和DSA方法的比較:

DSA的簽名和驗簽函數如下:

DSA算法特點:
DSA與RSA不同,DSA只能提供數字簽名,但不能用于加密。
DSA算法產生簽名,不依賴于被簽名的消息,所以可以預先計算。

4、 橢圓曲線數字簽名算法(ECDSA)

橢圓曲線密碼有效率方面的優勢,尤其是在需在短密鑰長度的應用中,RSA密碼的位數越來越長。

ECDSA的處理過程簡述:

1. 參與數字簽名的雙方都使用相同的全局域參數,用于定義橢圓曲線及曲線上的基點。 2. 簽名方需要生成私鑰和公鑰。 對于私鑰,簽名方選擇使用隨機數或者偽隨機數。使用隨機數和基點,簽名方計算出橢圓曲線上的另一個解點,作為簽名的公鑰。 3. 對待簽名的消息進行hash計算。使用私鑰、全局域參數、hash值,來產生簽名。簽名包括兩個整數:r和s 4. 驗證簽名:使用簽名方提供的公鑰、全局域參數、整數s作為輸入,并將計算得到的v,與r進行比較。如果v=r,則簽名通過驗證。

下面是ECDSA簽名和驗簽流程:

5、 RSA-PSS數字簽名算法

RSA-PSS(RSA概率簽名)方案,被RSA實驗室推薦為RSA方案中最安全的一種。被廣泛應用于包括金融等領域,安全性足以說明。

MGF掩碼函數

基于SHA安全hash構建,輸入長度不固定的任意消息或者hash值,輸出為固定長度的值。

簽名操作


對以上的簽名過程說明:

1. 生成消息M的hash值mHash 2. 使用偽隨機數作為鹽(salt),得到M‘=padding1||mhash||3. 重新生成hash值H, H=Hash(M') 4. 計算H的MGF值,dbmask=MGF(H, emLen-hLen-1) 5. 構造數據的DB,DB=padding2||6. 計算maskedDB, maskedDB=DB異或dbmask 7. 將maskedDB的最左字節中的8emLen-emBits位置為0 8. 計算EM=maskedDB||H||bc 9. EM為二進制,將EM設為m,則簽名s=m^d mod n, d為私鑰

驗簽操作


對以上的驗簽過程說明:

1. 計算消息M的hash值mHash 2. dbMask=MGF(H,emLen-hLen-1) 3. 計算DB,DB=maskedDB 異或 dbMask 4. 將DB的最后sLen字節設為鹽值 5. 構造M‘=padding1 || mHash ||6. 生成M'的hash值H‘,H’=Hash(M') 7. 如果H’=H,驗證通過

注:

sLen為鹽的長度,emBits為輸入參數(比RSA模數n位長度小的值),emLen=emBits/8 padding1,十六進制00 00 00 00 00 00 00 00,即64位的0 padding2,十六進制若干位00后跟著01,其長度為(emLen-sLen-hLen-2)字節

總結

以上是生活随笔為你收集整理的密码编码学之数字签名的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。