91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 611KB
    文件類型: .rar
    金幣: 2
    下載: 1 次
    發布日期: 2021-06-18
  • 語言: C/C++
  • 標簽: DSA??密碼學??

資源簡介

1)利用C\C++語言實現DSA算法。
2)DSA中的Hash函數采用SHA算法。

(1)消息填充:因為我們存儲的時候是以字節為單位存儲的,所以消息的長度(單位:位)一定是 8 的倍數。而我們填充的時候也一定是 8 位、8 位地來填充。也即不可能只填充一個二進制位,至少是 8 個二進制位(一個字節)。因此最少填充 1 個字節,最多填充 64 個字節(64*8=512)。
在SHA1中,為了HASH小于2^64長度的輸入消息,先對消息m的長度進行處理,判斷補0后是512位的多少倍。
(2)大整數:因為涉及到幾百位的大整數運算,如這里規定p是512位,先封裝一個大整數類BigNumber,BigNumber的成員變量有sign, length, uint32_t number[MAXLENGTH], MAXLENGTH規定為128,也就是說這個BigNumber最多可以由128個uint32_t型的數拼起來。

資源截圖

代碼片段和文件信息

#include
#include
#include
#include
#include
#include
#include
#include“sha1.h“
#include“BigNumber.h“
using?namespace?std;

#define?TEXTTIME?10

BigNumber?zero(0);
BigNumber?one(1);
BigNumber?ten(10);
BigNumber?sixteen(16);

BigNumber?NUMS[11]?=?{BigNumber((unsigned?int)(0))BigNumber((unsigned?int)(1))BigNumber(2)BigNumber(3)BigNumber(4)BigNumber(5)BigNumber(6)
BigNumber(7)BigNumber(8)BigNumber(9)BigNumber((unsigned?int)(10))};


BigNumber?BigNumber::operator=(BigNumber?a)
{
this->length?=?a.length;
this->sign?=?a.sign;
for?(int?i?=?0;?i? {
this->number[i]?=?a.number[i];
}
return?*this;
}

BigNumber?BigNumber::operator+(BigNumber?a)
{
BigNumber?c(0);
BigNumber::unsignedaddBigNumber(*this?a?c);
return?c;
}

BigNumber?BigNumber::operator-(BigNumber?a)
{
BigNumber?c(0);
BigNumber::unsignedsubBigNumber(*this?a?c);
return?c;
}

BigNumber?BigNumber::operator*(BigNumber?a)
{
BigNumber?c(0);
BigNumber::unsignedmulBigNumber(*this?a?c);
return?c;
}

BigNumber?BigNumber::operator/(BigNumber?a)
{
BigNumber?c(0);
BigNumber?d(0);
BigNumber::unsigneddivBigNumber(*this?a?c?d);
return?c;
}

BigNumber?BigNumber::operator%(BigNumber?a)
{
BigNumber?c(0);
BigNumber?d(0);
BigNumber::unsigneddivBigNumber(*this?a?c?d);
return?d;
}

/*向屏幕輸出無符號大整數*/
void?BigNumber::unsignedprintBigNumber()
{
stack?s; //c++容器?
BigNumber?remainder; //余數?
BigNumber?tmp?=?*this;
if?(BigNumber::unsignedisEqual(tmpzero))
{
cout?< }
while?(!BigNumber::unsignedisEqual(tmp?zero))
{
remainder?=?tmp?%?ten;
tmp?=?tmp?/?ten;
s.push((unsigned?int)(remainder.number[0]));
}
while?(!s.empty())
{
cout?< s.pop();
}
cout?<}

/*根據string構建無符號大整數對象,n代表進制數*/
BigNumber::BigNumber(string?sint?n)
{
memset(BigNumber::number?0?MAXLENGTH*sizeof(uint32_t));
int?len?=?s.length();
BigNumber?resulttmp;
result?=?zero;
if?(n?==?10)
{ //十進制
for?(int?i?=?0;?i? {
if?(i?!=?0)
{
result?=?result?*?ten;
}
result?=?result?+?NUMS[int(s[i]?-?‘0‘)];
}
*this?=?result;
}
else?if?(n?==?2)
{ //二進制
for?(int?i?=?0;?i? {
if?(i?!=?0)
{
*this?=?*this*NUMS[2];
}
*this?=?*this?+?NUMS[int(s[i]?-?‘0‘)];
}
}
else?if(n==16) //留坑?
{

}
}

BigNumber::BigNumber(uint64_t?num)
{
memset(BigNumber::number?0?MAXLENGTH?*?sizeof(uint32_t));
if?(num?>>?32)
{ //num為64位
this->length?=?2;
this->number[0]?=?uint32_t(num&0x00000000ffffffff);
this->number[1]?=?uint32_t((num?>>?32)&0x00000000ffffffff);
}
else
{ //num為32位
this->length?=?1;
this->number[0]?=?uint32_t(num&0x00000000ffffffff);
}
}

BigNumber::BigNumber()
{
memset(BigNumber::number?0?MAXLENGTH?*?sizeof(uint32_t));
BigNumber::le

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件??????16324??2020-01-10?15:32??DSA\dsa-3\BigNumber.cpp

?????文件???????2503??2019-12-03?14:36??DSA\dsa-3\BigNumber.h

?????文件?????404650??2020-01-10?15:58??DSA\dsa-3\BigNumber.o

?????文件???????4566??2020-01-10?14:59??DSA\dsa-3\main.cpp

?????文件?????107780??2020-01-10?15:58??DSA\dsa-3\main.o

?????文件????????652??2019-11-25?21:56??DSA\dsa-3\plaintext.txt

?????文件???????4329??2020-01-08?22:10??DSA\dsa-3\sha1.c

?????文件????????527??2019-12-03?14:02??DSA\dsa-3\sha1.h

?????文件?????103659??2020-01-08?22:10??DSA\dsa-3\sha1.o

?????文件???????1404??2019-12-03?17:05??DSA\DSA-3.dev

?????文件????2353230??2020-01-10?15:58??DSA\DSA-3.exe

?????文件????????352??2020-01-10?21:57??DSA\DSA-3.layout

?????文件???????1428??2020-01-10?21:53??DSA\Makefile.win

?????文件????????652??2019-11-25?21:56??DSA\plaintext.txt

?????文件????????413??2020-01-10?21:53??DSA\private.txt

?????文件????????519??2020-01-10?21:53??DSA\public.txt

?????文件????????100??2020-01-10?21:53??DSA\signature.txt

?????文件????????704??2020-01-10?21:53??DSA\tmp

?????目錄??????????0??2020-01-10?15:58??DSA\dsa-3

?????目錄??????????0??2020-01-10?21:53??DSA

-----------?---------??----------?-----??----

??????????????3003792????????????????????20


評論

共有 條評論