資源簡介
Elgamal數字簽名主要利用離散對數的特性來實現簽名,具體方式如下:
生成
隨機選擇
簽名算法
驗證算法
代碼片段和文件信息
//本原元的概念:若模n下a的階d=φ(n),a就是n的本原元(又稱為原根)。此時a是Z*_n的生成元。
/*======================================================
Diffie-Hellman?算法下面就給出一個快速求大素數?p?及其本原根的算法
算法如下:
P1.?利用素性驗證算法,生成一個大素數?q;
P2.?令?p?=?q?*?2?+?1;
P3.?利用素性驗證算法,驗證?p?是否是素數,如果?p?是合數,則跳轉到?P1;
P4.?生成一個隨機數?g,1?P5.?驗證?g2?mod?p?和?gq?mod?p?都不等于?1,否則跳轉到?P4;
P6.?g?是大素數?p?的本原根。
======================================================*/
#include?“ELGamel.h“
int?main()
{
????//cout?<“簽名者?A:“?<????string?message;
????BigInteger?r?s;
????cout?<“輸入簽名的消息:“?<????cin?>>?message;????????//輸入簽名的消息
????elgamalSign((unsigned?char?*)message.c_str()?message.length()?r?s);????//調用ELGemel.h中的函數
????cout?<“簽名信息如下:“?<
????/*不要奇怪為什么r總是等于d去看一下r的定義就知道了。
????*r??=?g^k?mod?p[g是mod?p?下的本原元?k是任意
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-05-01?21:53??ELGamel\
?????目錄???????????0??2018-05-01?21:53??ELGamel\bin\
?????目錄???????????0??2018-05-01?21:53??ELGamel\bin\Debug\
?????文件?????1135459??2018-03-22?21:27??ELGamel\bin\Debug\ELGamel.exe
?????文件????????1332??2018-03-13?11:29??ELGamel\ELGamel.cbp
?????文件????????1032??2018-03-22?21:27??ELGamel\ELGamel.depend
?????文件????????1096??2018-03-22?22:17??ELGamel\ELGamel.layout
?????目錄???????????0??2018-05-01?21:53??ELGamel\include\
?????文件????????4298??2018-03-13?11:20??ELGamel\include\BigInteger.h
?????文件????????1908??2018-03-15?10:49??ELGamel\include\ELGamel.h
?????文件????????9085??2018-03-22?21:27??ELGamel\include\md5.h
?????文件????????1878??2018-03-15?14:00??ELGamel\main.cpp
?????目錄???????????0??2018-05-01?21:53??ELGamel\obj\
?????目錄???????????0??2018-05-01?21:53??ELGamel\obj\Debug\
?????文件???????50086??2018-03-22?21:27??ELGamel\obj\Debug\main.o
?????目錄???????????0??2018-05-01?21:53??ELGamel\obj\Debug\src\
?????文件??????115523??2018-03-13?11:25??ELGamel\obj\Debug\src\BigInteger.o
?????目錄???????????0??2018-05-01?21:53??ELGamel\src\
?????文件???????35889??2018-03-13?11:25??ELGamel\src\BigInteger.cpp
評論
共有 條評論