C 實現數字簽名

2021-06-09 03:13:10 字數 1517 閱讀 2260

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 接收...