摘要:傳送方可以用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.在 可用的管理單元 下,雙擊 證書 然後 如果作為管理員登入,請單擊 我的使用者帳戶 然後單擊 完成 如果作為使用者登入,則證書將自動載入。...