X509數字證書之二 摘要和簽名

2021-06-08 22:34:06 字數 1619 閱讀 4823

摘要:傳送方可以用x509數字證書對要傳送檔案的報文摘要進行簽名,接收方再用x509數字證書驗證傳送方發出的檔案是否被其他人篡改。

實際場景描述如下:

bob有乙份重要的商務檔案要送給alice和jack;alice和jack在收到bob的商務檔案後,需要確認此商務檔案的真實性,即要驗證檔案**自bob,而且要驗證檔案內容沒有被篡改過。雙方對檔案校驗的流程簡單描述如下:

1. bob 生成x509證書並匯出公鑰和私鑰檔案,私鑰檔案只留給自己;公鑰檔案發給alice和jack;

2. bob先用hash演算法生成商務檔案的報文摘要資訊,然後再用私鑰進行簽名;

3. bob把原商務檔案、簽名資訊和公鑰檔案打包一起發給alice和jack;

4. alick和jack校驗商務檔案是否來自bob,並且內容是否被篡改過。

流程圖如下:

alice和jack收到打包的檔案後,重新利用hash演算法對該商務檔案計算報文摘要資訊,然後再用bob的公鑰檔案驗證生成的報文摘要資訊是否和bob傳送來的簽名一致。如果一致,則說明商務檔案沒有被篡改,如果不一致,則說明商務檔案被篡改。流程圖如下:

程式**如下:

1. bob用sha1演算法計算報文摘要

byte hashbytes;

using (filestream fs = new filestream(docfile, filemode.open))

//bob用自己(傳送方)的私鑰對報文摘要進行簽名

//包含私鑰檔案的rsa演算法初始化

x509certificate2 certencrypt = new x509certificate2(prikeyfile, "123456");

byte signedhashbytes;

using (rsacryptoserviceprovider rsaproviderencrypt = (rsacryptoserviceprovider)certencrypt.privatekey)

2. alice和jack接收方重新計算接收檔案的報文摘要

/為了測試沒有篡改和篡改兩種情況,對檔案內容可以只複製和人為修改。

byte hashbytesnew;

using (filestream fs = new filestream(docfilenew, filemode.open))

//由證書公鑰檔案驗證

//初始化rsa演算法

x509certificate2 cerdecrypt = new x509certificate2(pubkeyfile);

bool isok = false;

using (rsacryptoserviceprovider rsaproviderdecrypt = (rsacryptoserviceprovider)cerdecrypt.publickey.key)

本示例**經過實際測試(包括檔案被改動和未被改動的兩種情況),是正確執行的**;此處共享,供開發人員參考。

x509數字證書匯入 然後刪除自身

這種程式的使用場景,需要給客戶乙個證書,但不能把證書直接給他讓他安裝,程式中需要用到給客戶的私鑰,但又不允許客戶將這個證書再去授權給其它人。重點並不是 是如何對使用者隱藏需要新增的資源 以文字為例 1.將檔案新增到資源中,直接貼上就可以 2.開啟解決方案,修改檔案屬性 生成操作為嵌入的資源。如果co...

利用X 509證書對XML進行加密和簽名

綜述 xml加密和簽名技術應用非常廣泛。asp.net 使用xml加密對配置資訊進行加密 infopath使用xml簽名對表單進行簽名 web服務使用xml加密和簽名對soap訊息進行加密和簽名 等等。w3c提供了相應的標準 而x.509是一種非常通用的證書格式,符合itu t x.509國際標準。...

mmc如何管理本機上的 數字 x 509 證書

將 證書 管理單元新增到使用者帳戶的 mmc 1.單擊 開始 單擊 開始搜尋 鍵入mmc,然後按enter。2.在 檔案 選單上,單擊 新增 刪除管理單元 3.在 可用的管理單元 下,雙擊 證書 然後 如果作為管理員登入,請單擊 我的使用者帳戶 然後單擊 完成 如果作為使用者登入,則證書將自動載入。...