用C編寫的簡單的口令保護程式

本程序可加到用戶的源程序之前,起到加鎖的作用。本程序的特點是:
口令保密性強(保存於文件KLK.CFG中,此文件名也可由用戶重新命名),而
且用戶可隨時修改口令。在程序中當用戶輸入口令後,系統首先測試口令文
件KLK.CFG是否存在(只有用戶運行了修改口令子函數後纔會生成口令文件,
否則系統只認默認口令88888888),若存在則從中取出口令字,否則系統用
默認口令與用戶輸入的口令進行較驗。另外,修改口令子函數changkl(),
可在用戶程序中調用,以修改口令文件中的口令字。

   本程序涉及到C語言函數getpass(char *),該函數從鍵盤讀取8位字符
並返回,且不在屏幕上顯示。我們正好利用這一函數功能進行輸入口令。

   程序清單如下:

#include
#include
void main()
{
char *password;
char kl[9]="88888888";
inti=0;
FILE *fpl;
window(1,1,80,25); /* 屏幕背景清屏成藍色 */
textbackground(1);
clrscr();
window(17,10,58,13);/* 開陰影窗口 */
textbackground(0);
clrscr();
for(i=0;i<=2;i++)
{
window(16,9,56,12);
textattr(14︳2<<4);
clrscr();
gotoxy(13,2);
password=(char *)getpass("請輸入系統口令:");
textcolor(4);
/* 若口令文件KLK.CFG存在,則從中取出口令字 */
if((fp=fopen("KLK.CFG","rb+"))!=NULL)
{
fseek(fp,O,SEEK_SET);
fgets(kl,9,fp);
fclose(fp);
}
   if(i==2&&strcmp(password,kl)!=0)
/* 三次口令無效退出 */
{
gotoxy(13,2);
cputs("口令錯誤,退出!!");
getch();
exit(0);
}
if(stcmp(password,kl)!=0)
{
gotoxy(13,2);
cputs("口令錯誤,重輸!!");
getch();
}
else break;
}
/* 進入主程序體 */
textbackground(1);
window(1,1,80,25);
clrscr();
gotoxy(10,10);
cputs("執行用戶主體程序……按任意鍵進行更改口令!");
getch();
changkl();/*用戶程序中調用修改口令函數*/
}

changkl() /* 修改口令子函數 */
{
char *klk;
char buf[1];
FILE *fp;
window(17,16,58,19);/* 開陰影窗口 */
textbackground(0);
clrscr();
window(16,15,56,18);
textattr(14︳4<<4);
clrscr();
gotoxy(8,4);
cputs("請修改口令字,必須爲八位字符");
gotoxy(14,2);
klk=(char *)getpass("請輸入新口令:");
gotoxy(14,2);
textcolor(2);
if(srlen(klk)!=8)
{
cputs("口令字無效,返回!!");
getxh();
return;
}
cputs("口令修改成功!!");
if((fp=fopen("KLK,CFG"."w"))!=null)
/* 保存口令到文件KLK.CFG */
{
fputs(klk,fp);
buf[0]=0xia;
fwrite(&buf[0],1,1,fp);
fclose(fp);
}
getch();
returm;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章