數字簽名
在日常工作中,有很多檔案需要領導審閱、簽名和蓋章,由於公司業務開展,跨地域、跨國業務也日益普遍,領導簽名蓋章變得很麻煩,開始的時候人們通過郵寄、傳真等方式來解決,但是耗費時間、人力、物力。在網路化日益深入的今天,需要領導審批、簽字蓋章的東西越來越多,時間也越來越緊迫,數字簽名的出現,很好了解決了這一問題。推動了網際網路及跨國集團的發展。
數字簽名基於雜湊演算法和公鑰加密演算法,對明文報文先用雜湊演算法計算摘要,然後用私鑰對摘要進行加密,得到的值就是原文的數字簽名。
數字簽名(又稱公鑰數字簽名、電子簽章)是一種類似寫在紙上的普通的物理簽名,但是使用了公鑰加密領域的技術實現,用於鑑別數字資訊的方法。
一套數字簽名通常定義兩種互補的運算,乙個用於簽名,另乙個用於驗證。
可以由下圖表示電子簽名的用處:
流程圖如下:
數字簽名的使用一般涉及以下幾個步驟,我們通過安全電子郵件為案例進行介紹
(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);
keyvaluepairkeypair = 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);
}
RSA演算法原理
rsa演算法原理 經過上述準備工作之後,可以得到 根據費爾馬小定義,根據以下公式可以完成解密操作 rsa本身演算法的核心思想還是比較簡單的,加密 解密演算法的區別也只是在乘方取模部分使用的數字有所區別而已 當然,實際運用要比示例 複雜得多,由於rsa演算法的公鑰私鑰的長度 模長度 要到1024位甚至...
RSA演算法原理
rsa演算法是最廣泛使用的非對稱加密演算法。金鑰長度為1024位,特殊情況下比如國家重要的一些東西採用2048位。在理解rsa演算法之前先來看4個數學概念 互質關係 兩個整數,除了1之外沒有其它公因子,就稱這兩個整數具有互質關係。尤拉函式 用 n 表示。例如在1 8中,與8形成互質關係的有4個,那麼...
RSA演算法原理
一 rsa演算法數論 將兩個大素數相乘十分容易,但是想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密金鑰。二 rsa演算法涉及三個引數,n e1 e2。三 公私鑰生成過程 1 首先,需要兩個大質數,p和q,並且p不等於q。2 n是兩個大質數p q的積。n的二進位制表示時所占用的位數就是...