C 數字簽名

2021-08-21 03:10:07 字數 2494 閱讀 8294

在日常工作中,有很多檔案需要領導審閱、簽名和蓋章,由於公司業務開展,跨地域、跨國業務也日益普遍,領導簽名蓋章變得很麻煩,開始的時候人們通過郵寄、傳真等方式來解決,但是耗費時間、人力、物力。在網路化日益深入的今天,需要領導審批、簽字蓋章的東西越來越多,時間也越來越緊迫,數字簽名的出現,很好了解決了這一問題。推動了網際網路及跨國集團的發展。

數字簽名基於雜湊演算法和公鑰加密演算法,對明文報文先用雜湊演算法計算摘要,然後用私鑰對摘要進行加密,得到的值就是原文的數字簽名。

數字簽名(又稱公鑰數字簽名、電子簽章)是一種類似寫在紙上的普通的物理簽名,但是使用了公鑰加密領域的技術實現,用於鑑別數字資訊的方法。

一套數字簽名通常定義兩種互補的運算,乙個用於簽名,另乙個用於驗證。

可以由下圖表示電子簽名的用處:

流程圖如下:

數字簽名的使用一般涉及以下幾個步驟,我們通過安全電子郵件為案例進行介紹

(1)發件人生成或取得獨一無二的加密密碼組,包括私鑰和公鑰。

(2)發件人書寫電子郵件

(3)發件人用安全的摘要演算法獲取電子郵件的資訊摘要

(4)發件人再使用私鑰對資訊摘要進行加密,即可得到數字簽名。  

(5)發件人將數字簽名附在資訊之後.

(6)發件人將數字簽名和資訊(加密或未加密)傳送給電子收件人.

(7)收件人使用發件人的公共密碼(公鑰)確認發件人的電子簽名,即將發件人的數字簽名通過公鑰進行解密,得到資訊摘要

(8)收件人使用同樣安全的摘要演算法,獲取資訊(加密或未加密)的"資訊摘要".

(9)收件人比較兩個資訊摘要.假如兩者相同,則收件人可以確信資訊在簽發後並未作任何改變

(10) 收件人從證明機構處獲得認證證書(或者是通過資訊發件人獲得),這一證書用以確認發件人發出資訊上的數字簽名的真實性.證明機構在數字簽名系統中是乙個典型的受委託管理證明業務的第三方.該證書包含發件人的公共密碼和姓名(以及其他可能的附加資訊),由證明機構在其上進行數字簽名.

其中,第(1)~(6)是數字簽名的製作過程,(7)~(10)是數字簽名的核實過程

1、防冒充,因為私鑰只有簽名者自己知道,其他人不能偽造出正確的簽名

2、可鑑別身份,接收方用傳送方的公開公鑰對報文簽名進行解密運算後,和原文進行匹配

3、防篡改,明文和簽名值一起傳送,相互驗證,防止資料被篡改

4、防抵賴,簽名值可以鑑別身份,帶簽名的資料裡包含的資訊簽名者是不能抵賴的

現在典型的應用如:網上銀行、電子商務、電子政務、網路通訊等

其中乙個最重要的應用場景為:數字的證書,後續有具體文章對其進行詳細介紹。

數字簽名

///

///數字簽名

/// ///

原文 ///

私鑰 ///

簽名 public

static

string hashandsignstring(string plaintext, string

privatekey)

}

簽名認證:

///

///驗證簽名

/// ///

原文 ///

簽名 ///

公鑰 ///

public

static

bool verifysigned(string plaintext, string signeddata, string

publickey)

}

測試用例:

public

static

void

testsign()

",originaldata);

keyvaluepair

keypair =encrypter.creatersakey();

string privatekey =keypair.value;

string publickey =keypair.key;

//1、生成簽名,通過摘要演算法

string signeddata =encrypter.hashandsignstring(originaldata, privatekey);

console.writeline(

"數字簽名:

",signeddata);

//2、驗證簽名

bool verify =encrypter.verifysigned(originaldata, signeddata,publickey);

console.writeline(

"簽名驗證結果:

",verify);

}

C 實現數字簽名

c 實現數字簽名 using system using system.collections.generic using system.windows.forms using system.security.cryptography namespace dsaexample private void...

數字簽名簽名概述

數字簽名的技術流程描述 1 傳送者使用摘要演算法對傳送資訊產生資訊摘要 2 傳送者使用自己的私鑰對資訊摘要進行簽名 3 傳送者將資訊本身和已簽名的摘要一起傳送出去 4 接收者使用相同的摘要演算法對資訊本身計算資訊摘要 5 接收者使用傳送者的公鑰對簽名的摘要就行驗籤,獲得資訊傳送者的資訊摘要 6 接收...

數字信封 數字簽名

2019 08 06 19 51 51 數字簽名是用來表明資料傳送者身份的,有了簽名就說明這個資料是傳送都發出來的。為什麼?因為可以用你的公鑰開啟你的簽名資訊,獲取明文的hash值。數字信封,被公鑰加密後的對稱密碼被稱為數字信封,用於對稱金鑰的交換。數字證書,用來證明資料傳送者的身份的。為什麼能證明...