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

  • 大小: 327KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-08
  • 語言: C/C++
  • 標簽: 10級??參考??

資源簡介

C語言編寫,密碼學實驗,10級做的,可參考。

資源截圖

代碼片段和文件信息

//文件名:實驗5
//作者:杜磊
//電子郵件地址:handsome9501@qq.com
//說明:實現sha對任意文件的hash?
//最后一次修改:2012年12月30日
#include????
#include?
#include?

typedef?struct?SHA1Context
{
??long Message_Digest[5]; //消息摘要
??long Length_Low; //消息比特長度
??long Length_High;
??short Message_Block_Index; //索引信息塊
??char Message_Block[64]; //消息分組?
??int Computed; ???????//計算判斷
??int Corrupted; ??????????//?損壞判斷
} SHA1Context;

class?SHA1
{
public:

SHA1();
virtual?~SHA1();
enum?SHA_ERROR
{
SHA_SUCCESS =?0 //正確狀態
SHA_NULL =?1 //空指針參數
SHA_INPUTTOOLONG =?2 //輸入過長判斷
SHA_STATEERROR =?3 //輸入結果判斷
};

private:
static?void?SHA1ProcessMessageBlock(SHA1Context?*context);
static?void?SHA1PadMessage(SHA1Context?*context);
public:
static?void?SHA1Reset(SHA1Context*?context);
static?SHA_ERROR?SHA1Input(SHA1Context*?context?const?unsigned?char*?message_array?unsigned?length);
static?SHA_ERROR?SHA1Result(SHA1Context*?context?unsigned?char?Message_Digest[20]);
};

?int?_loadfromfile(void*?&outputbufferFILE?*in_file)
{//載入文件至緩沖區并關閉文件返回文件大小
unsigned?int?filesize;
//計算文件長度
fseek(in_file0SEEK_END);
filesize=ftell(in_file);
rewind(in_file);//指針移動到文件頭
outputbuffer=malloc(filesize);//分配緩沖區
fread(outputbuffer1filesizein_file);//讀取文件內容進入緩沖區
fclose(in_file);//關閉輸入文件
return?filesize;
}

int??main(int?argcchar?*argv[])
{
?if(argc!=3)//容錯處理
?????{?
printf(“?Usage:?SHA.exe?inputfile?hashvalfile\n“);
printf(“inputfile???:?The?file?path?you?want?to?hash.\n“);
printf(“hashvalfile?:?The?file?path?you?want?to?store.\n“);
system(“pause“);
?return?0;
??????}
bool?flag=(argc==3);
unsigned?char?Digest[20];
unsigned?int?filesize;

void?*buffer;
FILE?*in_file;
FILE?*out_file;

SHA1Context?myContext;

if?(!(in_file=fopen(argv[1]“rb“)))
{
printf(“文件打開失敗!%s\n“argv[1]);
exit(1);
}??//以二進制打開文件
filesize=_loadfromfile(bufferin_file);
SHA1::SHA1Reset(&myContext);
SHA1::SHA1Input(&myContext(unsigned?char*)bufferfilesize);
SHA1::SHA1Result(&myContextDigest);
//輸出處理
if?(flag&&!(out_file=fopen(argv[2]“w+“)))?
{
printf(“文件不能打開!%s\n“argv[2]);
}
printf(“%s\nSHA1的值為:“argv[1]);
????for(int?i=0;i<5;i++)
{???
?????????for(int?j=0;j<4;j++)???
{
if(flag)fprintf(out_file“%X“Digest[i*4+j]);?//輸出結果為?Rol_1?Rol_2?Rol_3?Rol_4?Rol_5?組合
printf(“%X“Digest[i*4+j]);
????????}
????}
if(flag)
{
fclose(out_file);
}
if?(!flag)
system(“pause“);
return?0;
??}???

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

?????文件?????369664??2012-12-25?16:22??20101120068?杜磊?lab5\實驗五報告.doc

?????文件??????34304??2012-12-25?15:35??20101120068?杜磊?lab5\杜磊?5.exe

?????文件???????2721??2012-12-25?15:36??20101120068?杜磊?lab5\杜磊?5a.cpp

?????文件???????6491??2012-12-25?13:28??20101120068?杜磊?lab5\杜磊?5b.cpp

?????目錄??????????0??2012-12-25?16:23??20101120068?杜磊?lab5

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

???????????????413180????????????????????5


評論

共有 條評論