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

  • 大小: 150KB
    文件類型: .tar
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-09
  • 語言: C/C++
  • 標簽: sha1??

資源簡介

sha1算法實現,接口預先定義好,你可以參考資料進行擴展改進。

資源截圖

代碼片段和文件信息

/********************************************************************
**Copyright?(C)?2016?cugriver.?All?Rights?Reserved
**??
**??FileName:???sha1.cpp
**??Author:?????cugriver
**??Email:??????cugriver@163.com
**??LastChange:?2016-06-19?15:39:01
********************************************************************/
#include?“sha1.h“
SHA1::SHA1():_msgdgt(NULL)?_k(NULL){}
SHA1::~SHA1(){
????if(_msgdgt)?delete[]_msgdgt;
????if(_k)?delete[]?_k;
}
unsigned?int*?SHA1::preProcess(std::string?data){
???uint32_t??_block_num_?=?(data.length()?+?8)/64?+?1;?
???uint32_t*?_block_?=?new?uint32_t[_block_num_*16];?
???uint32_t?i?=?0;
???for(i?=?0;?i????????_block_[i]?=?0x00000000;
???for(i?=?0;?i????????_block_[i?>>?2]?|=??((uint32_t)data[i])?<???}?
???_block_[i?>>?2]?|=?0x80?<???_block_[_block_num_*16-2]?=?data.length()*8;
???uint32_t?_low?=?_block_[_block_num_*16-2];?
???uint32_t?_high?=?_block_[_block_num_*16-1];
???_low?=?transform(_low);
???_high?=?transform(_high);
???_block_[_block_num_*16-2]?=?_high;
???_block_[_block_num_*16-1]?=?_low;
???return?_block_;
}
void?SHA1::handleBlock(uint32_t*?block){
????uint32_t?a?b?c?de?temp?=?0x00000000;
????a?=?_msgdgt[0];
????b?=?_msgdgt[1];
????c?=?_msgdgt[2];
????d?=?_msgdgt[3];
????e?=?_msgdgt[4];
????uint32_t*?w?=?new?uint32_t[80];
????for(int?i?=?0;?i?????????w[i]?=?transform(block[i]);
????for(int?i?=?16;?i????????uint32_t?t?=?w[i-3]?^?w[i-8]?^?w[i-14]?^?w[i-16];
???????w[i]?=?leftRotate(t1);
????}
????for(int?i?=?0;?i?????????uint32_t?f?=?0x00000000;
????????uint32_t?k?=?0x00000000;
????????if(i????????????f?=?step1(b?c?d);
???????????k?=?_k[0];
????????}else?if(i????????????f?=?step2(b?c?d);
???????????k?=?_k[1];
????????}else?if(i????????????f?=?step3(b?c?d);
???????????k?=?_k[2];
????????}else{
???????????f?=?step4(b?c?d);
???????????k?=?_k[3];
????????}
????????temp?=?leftRotate(a5)?+?f?+?e?+?k?+?w[i];
????????e?=?d;
????????d?=?c;
????????c?=?leftRotate(b?30);
????????b?=?a;
????????a?=?temp;
????}?
????_msgdgt[0]?=?(_msgdgt[0]?+?a)?&?0xFFFFFFFF;
????_msgdgt[1]?=?(_msgdgt[1]?+?b)?&?0xFFFFFFFF;
????_msgdgt[2]?=?(_msgdgt[2]?+?c)?&?0xFFFFFFFF;
????_msgdgt[3]?=?(_msgdgt[3]?+?d)?&?0xFFFFFFFF;
????_msgdgt[4]?=?(_msgdgt[4]?+?e)?&?0xFFFFFFFF;
}
unsigned?int?SHA1::transform(uint32_t?value){
????uint32_t?_temp?=?0x00000000;
????_temp?|=?(value?&?0x000000ff)?<????_temp?|=?(value?&?0x0000ff00)?<????_temp?|=?(value?&?0x00ff0000)?>>?8;
????_temp?|=?(value?&?0xff000000)?>>?24;
????return?_temp;
}

unsigned?int?SHA1::step1(uint32_t?b?uint32_t?c?uint32_t?d){
????return?(b?&?c)?|?((~b)?&?d);?
}
unsigned?int?SHA1::step2(uint32_t?b?uint32_t?c?uint32_t?d){
????return?(b?^?c?^?d);
}?
unsigned?int?SHA1::step3(uint32_t?b?uint32_t?c?uint32_t?d){
????return?(b?&?c)?|?(b?&?d)?|?(c?&?d);
}
unsigned?int?SHA1::step4(uint32_t?b?uint32_t?c?uint32_t?d){
????return?(b?^?c?^?d);

評論

共有 條評論