日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言程序存为bin程序,对文件进行加密与解密(c语言)-bin文件打开

發(fā)布時(shí)間:2025/4/16 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言程序存为bin程序,对文件进行加密与解密(c语言)-bin文件打开 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

操作界面

加密前的文件:

加密后的文件

將加密后的文件解密后即可還原

初始密碼為:hujing

開發(fā)環(huán)境:vc6.0

操作系統(tǒng):windows

源代碼

/**************************************************

*** 實(shí)現(xiàn)了對(duì)一個(gè)文件進(jìn)行加密和解密 ***

*** 作者:胡靖 ***

*** 版本:1.0 ***

**************************************************/

#include

#include

#include

void Print();

int Encryption();

int PasswordVerify();

int PasswordChange();

int PasswordGet();

char Password[30] = "hujing";

char Password_K[30] = "123451234512345123451234512345";

char PasswordPath[] = "c:\\string.txt";

int main(){

int i;

PasswordGet();

if(PasswordVerify() == 0){

printf("密碼驗(yàn)證失敗!\n");

getch();

exit(1);

}else{

printf("驗(yàn)證通過!\n");

getch();

}

while(1){

system("cls");//清屏

fflush(stdin);//清空緩沖區(qū)

Print();

scanf("%d", &i);

switch(i){

case 1:

case 2: Encryption(); break;

case 3: PasswordChange(); break;

case 0: exit(1);

default: printf("輸入異常!\n");

printf("按任意鍵繼續(xù)..........");

getch();

}

}

return 0;

}

//輸出界面

void Print(){

printf("*******************************************\n");

printf("***** 1.加密 ****\n");

printf("***** 2.解密 ****\n");

printf("***** 3.修改密碼 ****\n");

printf("***** 0.退出 ****\n");

printf("*******************************************\n");

}

//獲取登錄密碼

int PasswordGet(){

FILE *PasswordBin;

int i, num;

PasswordBin = fopen(PasswordPath, "rb");

//文件打開失敗(第一次登陸)

if(PasswordBin == NULL){

num = strlen(Password);

PasswordBin = fopen(PasswordPath, "wb");

system("attrib +H c:\\string");

//將初始密碼轉(zhuǎn)碼

for(i = 0; i < num; i++){

Password[i] ^= Password_K[i];

}

Password[i] = '\0';

//將密碼寫入文件

if( fwrite(Password, 1, num, PasswordBin) == 0){

printf("文件寫入失敗!\n");

exit(1);

}

//還原密碼

for(i = 0; i < num; i++){

Password[i] ^= Password_K[i];

}

Password[i] = '\0';

return 1;

}

//讀取密碼并轉(zhuǎn)碼

fread(Password, 1, 30, PasswordBin);

for(i = 0; i < strlen(Password); i++){

Password[i] ^= Password_K[i];

}

return 0;

}

//加密\解密函數(shù)

int Encryption(){

char BeforeFile_s[30], //加密前文件路徑

Key_s[30], //密鑰

AfterFile_s[30]; //加密后文件路徑

FILE *BeforeFile, //加密前文件

*AfterFile; //加密后文件

char Buffer[50]; //緩存數(shù)組

int ReadNum, //讀取的長(zhǎng)度

KeyNum; //密鑰的長(zhǎng)度

int i;

//接收文件路徑及密鑰

printf("請(qǐng)輸入原文件的完整路徑:\n");

fflush(stdin);

scanf("%s", BeforeFile_s);

printf("請(qǐng)輸入新建文件的完整路徑:\n");

fflush(stdin);

scanf("%s", AfterFile_s);

printf("請(qǐng)輸入加密 密鑰:\n");

fflush(stdin);

scanf("%s", Key_s);

KeyNum = strlen(Key_s);

//打開前文件

BeforeFile = fopen(BeforeFile_s, "rb");

if(BeforeFile == NULL){

printf("文件[%s]打開失敗!\n", BeforeFile_s);

printf("按任意鍵繼續(xù)..........");

getch();

return 1;

}

//打開后文件

AfterFile = fopen(AfterFile_s, "wb");

if(AfterFile == NULL){

printf("文件[%s]打開失敗!\n", AfterFile_s);

printf("按任意鍵繼續(xù)..........");

getch();

fclose(BeforeFile);

return 1;

}

//進(jìn)行文件加密\解密

while((ReadNum = fread(Buffer, 1, KeyNum, BeforeFile)) != 0){

for(i = 0; i < ReadNum; i++){

Buffer[i] ^= Key_s[i];

}

if( fwrite(Buffer, 1, ReadNum, AfterFile) == 0){

printf("文件寫入失敗!\n");

printf("按任意鍵繼續(xù)..........");

getch();

fclose(BeforeFile);

fclose(AfterFile);

return 1;

}

}

printf("操作成功!\n");

printf("按任意鍵繼續(xù)..........");

getch();

fclose(BeforeFile);

fclose(AfterFile);

return 0;

}

//密碼驗(yàn)證函數(shù)

int PasswordVerify(){

char Password_s[30];

int i, j;

for(i = 0; i < 3; i++){

printf("請(qǐng)輸入驗(yàn)證密碼(第%d次,還剩%d次):\n", i+1, 3-i);

fflush(stdin);

//接收鍵盤錄入

for(j = 0; 1; j++){

Password_s[j] = getch();

//輸入回車時(shí)

if(Password_s[j] == '\r'){

Password_s[j] = '\0';

break;

}

//輸入退格時(shí)

if(Password_s[j] == '\b'){

printf("\b \b");

j -= 2;

if(j < 0){

j = -1;

}

continue;

}

printf("*");

}

printf("\n");

if(strcmp(Password_s, Password) == 0){

return 1;

}

}

return 0;

}

//密碼修改函數(shù)

int PasswordChange(){

FILE *PasswordBin;

char Password_s[30], Password_ss[30];

int i, j;

//驗(yàn)證原密碼

if(PasswordVerify() == 0){

printf("驗(yàn)證失敗!\n");

printf("按任意鍵繼續(xù)..........");

return 0;

}

printf("請(qǐng)輸入新密碼:\n");

fflush(stdin);

//接收鍵盤錄入

for(j = 0; 1; j++){

Password_s[j] = getch();

//輸入回車時(shí)

if(Password_s[j] == '\r'){

Password_s[j] = '\0';

break;

}

//輸入退格時(shí)

if(Password_s[j] == '\b'){

printf("\b \b");

j -= 2;

if(j < 0){

j = -1;

}

continue;

}

printf("*");

}

printf("\n");

printf("請(qǐng)?jiān)俅屋斎?\n");

fflush(stdin);

//接收鍵盤錄入

for(j = 0; 1; j++){

Password_ss[j] = getch();

//輸入回車時(shí)

if(Password_ss[j] == '\r'){

Password_ss[j] = '\0';

break;

}

//輸入退格時(shí)

if(Password_ss[j] == '\b'){

printf("\b \b");

j -= 2;

if(j < 0){

j = -1;

}

continue;

}

printf("*");

}

printf("\n");

//驗(yàn)證兩次輸入密碼是否相同

if(strcmp(Password_s, Password_ss) != 0){

printf("兩次密碼輸入不同!修改失敗!\n");

printf("按任意鍵繼續(xù)..........");

getch();

return 0;

}

//將修改后的密碼寫入文件

PasswordBin = fopen(PasswordPath, "wb");

for(i = 0; i < strlen(Password_s); i++){

Password_s[i] ^= Password_K[i];

}

fwrite(Password_s, 1, strlen(Password_s), PasswordBin);

printf("密碼修改成功!\n");

printf("按任意鍵繼續(xù)..........");

getch();

return 0;

}

總結(jié)

以上是生活随笔為你收集整理的c语言程序存为bin程序,对文件进行加密与解密(c语言)-bin文件打开的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。