c#實現數字簽名
using system;
using system.collections.generic;
using system.windows.forms;
using system.security.cryptography;
namespace dsaexample
private void buttonok_click(object sender, eventargs e)
hashvalue = list.toarray();//將list物件轉換成陣列
//匯出公鑰和私鑰
dsakeyinfo = dsa.exportparameters(true);
//得到簽名的hash值
signedhashvalue = dsasignhash(hashvalue, dsakeyinfo, "sha1");
//此處應該將hashvalue、signedhashvalue以及公鑰發
//送給接收方。為簡化起見,這裡僅將hash和簽名的hash顯示出來
textboxhashvalue.text = gethashstring(hashvalue);
textboxverifyhashvalue.text = gethashstring(signedhashvalue);
}catch (argumentnullexception err)
}/// /// 根據雜湊值拼接字串
///
/// 雜湊值
/// 拼接的字串
private string gethashstring(byte bytes)
s = s.trimend(',');//刪除最後的「,」
return s;
}/// /// 使用dsa演算法簽名雜湊值
///
/// 要被簽名的雜湊值
/// dsa金鑰資訊
/// 指定雜湊演算法
/// 簽名後的結果
private byte dsasignhash(byte hashtosign, dsaparameters dsakeyinfo, string hashalg)
//注意:資料進行hash運算成為了雜湊值(簡稱雜湊值一),雜湊值再經過金鑰加密則變成了數字簽名
//數字簽名經過公鑰解密後又變回成了雜湊值(簡稱雜湊值二)
//如果雜湊值一和雜湊值二相等,說明資料簽名是完整的,而且可以確定該訊息是由持有該數字簽名的私鑰的人傳送的。
catch (cryptographicexception err)
}private void buttonverify_click(object sender, eventargs e)
else
}catch (cryptographicexception err)}}}
介面設定:
實現數字簽名
數字簽名演算法 dsa,digital signature algorithm 是一種公開金鑰演算法,不能用於加密,只能用於數字簽名。主要用作為接收者驗證數字的完整性和資料傳送者的身份,dsa演算法的安全性基於解離散對數的困難性。package main import crypto dsa cryp...
C 數字簽名
在日常工作中,有很多檔案需要領導審閱 簽名和蓋章,由於公司業務開展,跨地域 跨國業務也日益普遍,領導簽名蓋章變得很麻煩,開始的時候人們通過郵寄 傳真等方式來解決,但是耗費時間 人力 物力。在網路化日益深入的今天,需要領導審批 簽字蓋章的東西越來越多,時間也越來越緊迫,數字簽名的出現,很好了解決了這一...
數字簽名簽名概述
數字簽名的技術流程描述 1 傳送者使用摘要演算法對傳送資訊產生資訊摘要 2 傳送者使用自己的私鑰對資訊摘要進行簽名 3 傳送者將資訊本身和已簽名的摘要一起傳送出去 4 接收者使用相同的摘要演算法對資訊本身計算資訊摘要 5 接收者使用傳送者的公鑰對簽名的摘要就行驗籤,獲得資訊傳送者的資訊摘要 6 接收...