?? lockfunction.cpp
字號:
#include "func.h"
int menu(void)//人機(jī)對話界面
{
int result;
printf("\n\n--------------------------------------------\n");
printf("Notice:default pwd is 000000\n");
printf("Choose the number you want to run below:\n\n");
printf("1 Enter Password to unlock\n");
printf("2 Change Password\n");
printf("3 Find your Password(If you forget the former one)\n");
printf("4 Return to the menu\n");
printf("--------------------------------------------\n");
scanf("%d",&result);
return result;
}
int FixPwd(int *store,int *enter,int n)//密碼匹配函數(shù)
{
int state=1,i;
for(i=0;i<n;++i)
{
if(store[i]!=enter[i])
{
state=0;
break;
}
}
return state;
}
void Print(int *prt,int n)//通過加密并且打印*
{
int i;
for(i=0;i<n;++i)
printf("*");
}
void Cancle(int *enter,int n) //糾錯(cuò)函數(shù),用戶要求重新輸入
{
int i;
for(i=0;i<n;++i)
enter[i]=0;
printf("Please enter your password to unlock:\n");
for(i=0;i<n;++i)
scanf("%d",&enter[i]);
}
void Turn2str(int s[], unsigned char c[], int size)
{
int* ps=s;
unsigned char* pc=c;
while(ps!=s+size)
{
*pc++ = '0'+*ps++;
}
}
void MD5(unsigned char *string)
{
unsigned char digest[16];
unsigned int len = 7;
MD5_CTX context;
MD5_CTX();
context.MD5Update(string,len);
context.MD5Final(digest);
printf ("MD5 (\"%s\") = ",string);
context.MDPrint (digest);
printf ("\n");
}
void DefPwd(int *store,int *enter,int n)//開鎖函數(shù),對應(yīng)按鈕1
{
int i,state,cnt=0;
printf("Please enter your password to unlock:\n");
for(i=0;i<n;++i)
{
scanf("%d",&enter[i]);
if(enter[i]==10)
{
Cancle(enter,n);
break;//跳出,再次回到正常步驟
}
}
printf("Now your enterPwd is:");
Print(enter,n);
printf("\n\n");
state=FixPwd(store,enter,n);
if(state)
{
Turn2str(storePwd,convert,SIZE); //將數(shù)字?jǐn)?shù)組轉(zhuǎn)化為字符串
printf("The string is \"%s\"\n",convert);
MD5(convert);
printf("Unlocked now!\n\n");
}
else
{
while(cnt<3)
{
++cnt;
printf("Wrong password! Please enter again: \n");
for(i=0;i<n;++i)
scanf("%d",&enter[i]);
Print(enter,n);
printf("\n\n");
state=FixPwd(store,enter,n);
if(state)
{
Turn2str(storePwd,convert,SIZE); //將數(shù)字?jǐn)?shù)組轉(zhuǎn)化為字符串
printf("The string is \"%s\"\n",convert);
MD5(convert);
printf("Unlocked now!\n\n");
break;
}
}
if(cnt>=3)
{
Print(enter,n);
printf("You have enter too many times!\n");
}
return;
}
}
void FindPwd(int *store,int n)
{
char ID[19]="440301198505294819";
char enter[19];
int state,i;
printf("Please enter your ID number to find your Pwd:\n");
for(i=0;i<18;++i)
{
enter[i]=getch();
putch('*');
}
enter[18]='\0';
state=strcmp(ID,enter);
printf("\n");
if(!state)
{
printf("Congratulatrions!\n");
printf("Your Password is : ");
for(i=0;i<n;++i)
printf("%d",store[i]);
}
else
printf("Error.EXIT!\n");
}
void ChangePwd(int *oldPwd,int *newPwd,int n)
{
int buf[SIZE];
int i,state=0;
do
{
printf("Enter your previous pwd:\n");
for(i=0;i<n;++i)
scanf("%d",&buf[i]);
state=FixPwd(oldPwd,buf,n); //比較和原來的密碼是否相符
}while(!state); //state=1相符時(shí),跳出執(zhí)行下一環(huán)節(jié)
state=0;
do
{
printf("\nEnter your new pwd:\n");
for(i=0;i<n;++i)
scanf("%d",&buf[i]); //用buf數(shù)組存new password
printf("Your enterpwd is :");
Print(buf,n);
printf("\n");
printf("\nRepeated enter your pwd:\n");
for(i=0;i<n;++i)
scanf("%d",&newPwd[i]); //用repeat數(shù)組存enter password
printf("Your enterpwd is: ");
Print(newPwd,n);
state=FixPwd(buf,newPwd,n);
if(state)
printf("\nNow your password has changed.\n");
}while(!state);
for(i=0;i<n;++i)
oldPwd[i]=newPwd[i];
Turn2str(oldPwd,convert,SIZE); //將數(shù)字?jǐn)?shù)組轉(zhuǎn)化為字符串
printf("The string is \"%s\"\n",convert);
MD5(convert);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -