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

  • 大小: 291KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-06-02
  • 語言: 其他
  • 標簽: OTP??

資源簡介

一次性口令機制鑒別流程 第一步:認證請求(用戶名)。第二步:依據用戶名,查找并發(fā)送挑戰(zhàn)(R,N)。第三步:計算并發(fā)送應戰(zhàn)(HN(PW‖R ))。第四步:計算應戰(zhàn)HN (PW‖R ) 的散列值 。第五步:取出HN+1 (PW‖R ),H(HN (PW‖R))=HN+1 (PW‖R) ?

資源截圖

代碼片段和文件信息

#include?“md5.h“
#include
#include
#include
#include
#include
using?namespace?std;

struct?inf??//用戶存儲的信息結構
{
char?uid[50];?//用戶名
char?answer[50];?//應答值
int?r;???//隨機數
int?N;???//挑戰(zhàn)值?
char?password[50];?//密碼
};

inf?infor[300];??//最多有300個用戶?

int?n=0;???????//全局變量n,用于表示是目前系統(tǒng)中用戶數?

void?init()????
{
char?uid[50]answer[50]password[50];
????int?Nrtemp;
fstream?file;?
file.open(“l(fā)ib.txt“ios::in);
if(!file);
else
{
while(file>>uid>>answer>>r>>N>>password)?????//將文件中的uid、answer、r、N、password賦值給結構體?
{
strcpy(infor[n].uiduid);
strcpy(infor[n].answeranswer);
infor[n].r=r;
infor[n].N=N;
strcpy(infor[n].passwordpassword);

//cout< n++;
}
}
file.close();
}

void?reg()??????//用戶注冊?
{
char?uid[50]password1[50]password2[50]ans[100]={0}answer[50];
int?Nritemp;
while(1)???
{
cout<<“請輸入用戶名:?“;
cin>>uid;

for(i=0;i if(strcmp(infor[i].uiduid)==0)
{
cout< break;
}
if(i==n)?break;???//如果沒有用戶名不重復,則下一步?
}
while(1)
{
cout<<“請輸入密碼:?“;
cin>>password1;
cout<<“請再次輸入密碼:?“;
cin>>password2;
if(strcmp(password1password2)==0)???break;
else
{
cout< }
}
srand(time(0));
r=rand();
infor[n].r=r;??//相當于服務器給用戶一個隨機數r?

N=rand()%999/11;?
infor[n].N=N;?//相當于服務器給用戶一個挑戰(zhàn)值N?

//N=3;??//用于測試?
//infor[n].N=N;?
???????????????????????
i=0;?
temp=r;
?while(temp!=0)
{
i++;
temp/=10;
}

????while(r!=0)
{
i--;
ans[i]=r%10+‘0‘;
r/=10;
}

strcat(anspassword1);??//將r與password拼接??

for(i=0;i {
strcpy(ansMD5String(ans));??//計算n次數的md5值?
}?

strcpy(answerMD5String(ans)); //?再進行一次md5存放在answer中
strcpy(infor[n].uiduid);
strcpy(infor[n].answeranswer);
strcpy(infor[n].passwordpassword1);
n++;

cout< system(“pause“);
system(“cls“);
}

void?check()????//身份認證?
{
char?uid[50]answer[50]ans[100]={0}password[50];
int?Nrijtemp;
char?ch;
cout<<“請輸入用戶名:?“;
cin>>uid;
for(i=0;i {
if(strcmp(infor[i].uiduid)==0)
{
cout<<“隨機數r為:?“< cout<<“挑戰(zhàn)值N為:?“< cout<<“是否返回進行應答值計算(y/n):?“;
cin>>ch;
if(ch==‘y‘)?cout<
else?if(ch==‘n‘)
{
cout<<“請輸入應答值:?“;
cin>>answer;
if(strcmp(MD5String(answer)infor[i].answer)==0)
{
printf(“\n“);
cout<<“認證通過!“;??
printf(“\n“);
strcpy(infor[i].answeranswer);
infor[i].N=infor[i].N-1;?

fstream?f;
f.open(“l(fā)ib.txt“ios::out);
????for(j=0;j ????{
???? f<

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

?????文件????????354??2019-04-02?18:50??一次性口令\lib.txt

?????文件????????792??2019-05-08?21:45??一次性口令\Makefile.win

?????文件???????8210??2019-04-01?18:45??一次性口令\md5.h

?????文件???????6274??2019-04-02?18:42??一次性口令\OTP.cpp

?????文件???????1008??2019-04-01?19:58??一次性口令\OTP.dev

?????文件????1367409??2019-05-08?21:45??一次性口令\OTP.exe

?????文件????????192??2019-05-09?22:03??一次性口令\OTP.layout

?????文件??????70655??2019-04-02?18:42??一次性口令\OTP.o

?????目錄??????????0??2019-05-10?12:31??一次性口令

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

??????????????1454894????????????????????9


評論

共有 條評論