資源簡介
在 vc++6.0 上實現的文件加密解密程序注意沒有用mfc。
代碼片段和文件信息
#include?//輸入輸出函數
#include???
#include???//?標準庫函數
#include???//?字符串處理函數
#include???//?字符操作函數
#include???//?控制臺輸入輸出函數,雖然不是標準頭文件,但是大部分編譯器都支持
/**
?*?在文件開頭聲明函數原型,將函數定義放在main()函數后面
?*?這是一個優雅的編程習慣
**/
void?printMenu(void);
int?checkPwd(int?type);
int?encryptFile(char?*sourcefile?char?*secretKeychar?*targetFile);
char?redo(void);
/**
?*?password?被main()和checkPwd()兩個函數使用
?*?必須定義為全局變量,即在main()函數外部定義
**/
int??password=123456;??//?軟件初始密碼
int?main(){
/**
?*?不像?password?變量,下面這些變量只在main()函數內部使用
?*?所以可以定義為局部變量,即定義在mian()函數內部
**/
int?newpwd?newpwda;??//?更改密碼時,用戶兩次輸入的新密碼
char?sourcefile[30]??//?加密/解密的文件名
targetFile[30]??//?解密/加密后要保存的文件名
secretKey[21]??//?文件加密的密鑰
action;?//?要進行的操作
//?操作前先校驗密碼
if(!checkPwd(1)){
????????cout<<“抱歉,3次輸入密碼錯誤。按任意鍵退出程序...“;
getch();
exit(1);
}
//?密碼校驗成功,顯示程序菜單,執行各種操作
while(1){
system(“cls“);??//?清屏
printMenu();??//?顯示菜單
????????cin>>action;
fflush(stdin);??//?清空stdin緩沖區
system(“cls“);
switch(action){
//?退出系統
case?‘z‘:
exit(0);
break;
//?文件加密
case?‘a‘:
while(1){
????????????????????cout<<“輸入要加密的文件名(含路徑):\n“;
????????????????????cin>>sourcefile;
????????????????????cout<<“輸入密鑰:“;?//密鑰是用戶自己定義的,可以隨意給需要加密的文件添加密鑰
cin>>secretKey;
cout<<“加密后的文件名(含路徑):“;??//給加密后的文件命名,并保存
????????????????????cin>>targetFile;
if(?encryptFile(sourcefile?secretKey?targetFile)?){
????????????????????????cout<<“恭喜你,文件“< ????????????????????}
if(redo()?==?‘a‘){??//?繼續加密文件
system(“cls“);
}else{??//?回到主菜單
break;
}
}
break;
//?文件解密
case?‘b‘:
while(1){
????????????????????cout<<“輸入要解密的文件名(含路徑):“;
????????????????????cin>>sourcefile;
????????????????????cout<<“輸入密鑰:“;
????????????????????cin>>secretKey;
????????????????????cout<<“解密后的文件名(含路徑):“;//對解密的文件系統又可以提供保存路徑
????????????????????cin>>targetFile;
if(?encryptFile(sourcefile?secretKey?targetFile)?){
????????????????????????cout<<“恭喜你,文件“< }
if(redo()?==?‘a‘){??//?繼續解密文件
system(“cls“);
}else{
break;??//?回到主菜單
}
}
break;
//?修改密碼
case?‘c‘:
while(1){
if(!checkPwd(2)){
????????????????????????cout<<“抱歉,3次輸入密碼錯誤。按任意鍵退出程序...“;
getch();
exit(0);
}
????????????????????cout<<“請輸入新密碼:“;
????????????????????cin>>newpwd;
????????????????????cout<<“請再次輸入新密碼:“;
????????????????????cin>>newpwda;
if(newpwd==newpwda){??//?兩次輸入密碼相同才成功
password?=?newpwd;
????????????????????????cout<<“恭喜你,修改密碼成功!\n“;
}else{
????????????????????????cout<<“兩次輸入密碼不相同,修改失敗!\n“;
}
if(redo()?==?‘a‘){??//?繼續修
- 上一篇:大一C語言考試上機使用的開卷材料
- 下一篇:帶到達時間的動態高優先權
評論
共有 條評論