當前位置:首頁 » 編程語言 » c語言寫的文件加密系統
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言寫的文件加密系統

發布時間: 2022-07-03 14:11:24

c語言編寫的程序,在輸入密碼時,如何加密

加密和解密演算法是程序編制中的重要一環。試想,如果我們平時使用的騰訊QQ、支付寶支付密碼、今日頭條賬號密碼那麼輕易就被別人盜取的話,很多不可以預料的事情就會發生!

在現實生活中,我們遇到過太多QQ密碼被盜取的情況,有的朋友QQ被盜之後,騙子利用朋友間信任騙取錢財的事情屢見不鮮。支付寶也曾出現過支付寶賬戶被惡意盜取的事件,對用戶利益造成了嚴重損害!這些在技術上都指向了同一相關問題:軟體加密演算法的強壯程度。今天,小編利用C語言來簡單實現一種加密方法。下面是源代碼。

需要說明:程序利用了ascii碼值的按照一定規律變換實現加密,對於解密過程,則是加密的逆過程。下面是程序的運行結果。

4190閱讀
搜索
編程免費課程300節
初學編程100個代碼
java自學一般要學多久
5秒破解excel密碼
python必背100源代碼
40歲零基礎學編程

⑵ 如何用C語言對文件進行加密和解密

對於加密要求不高的完全可以自己定義規則來進行加密。這種加密是很簡單很自由的,例如你在存文件的時候可以將文件中的每個字元都加上一個數,然後讀取該文件的時候再每個字元相應地減去那個數,即可實現就簡單的加密,這樣你儲存的文件看上去就是亂碼了。只是這個規則太簡單,規則你可以自己定,加密與解密對著來就行了。
下面程序用異或操作對文件進行加密和解密
/****************** 設計思路 ******************/
// 根據用戶輸入的加密/機密密碼,
// 每次都拿原文件和密碼等長度的一個字元串和密碼
// 對應元素異或進行加密/解密
// 另外因為是用異或方法,所以加密和解密就是同一個程序
// 即按照同樣的加密即是對文件的解密

#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <conio.h>
#include <stdlib.h>

char filename[256]; // 原文件
char password[256]; // 加密/解密密碼
const char filenametemp[] = "temp15435255435325432543.temp"; // 加密/解密中間文件

void inputpass(char *pass); //密碼輸入以"******"顯示

void main() {

FILE *fp; // 加密/解密的文件
FILE *fptemp; // 加密/解密過程臨時文件
int pwdlen; // 密碼長度
int i = 0; // 計數器
char ch = 0; // 讀入的字元

printf("請輸入要加密/解密的文件名(全路徑名): \n");
gets(filename);
if( (fp = fopen(filename, "rb")) == NULL) {
printf("找不到文件 %s\n", filename);
exit(1);
} // if

printf("請輸入要加密/解密的密碼: \n");
inputpass(password);
pwdlen = strlen(password);
if(pwdlen == 0) {
printf("密碼不能為空,加密/解密失敗\n");
exit(1);
} // if

fptemp = fopen(filenametemp, "wb"); // 打開中間文件
while(1) {
ch = fgetc(fp);// 從原文件讀入一個字元
if(feof(fp)) { // 已經讀到文件尾
break; // 退出循環
}
ch ^= password[i++]; // 對原字元和密碼進行異或操作
fputc(ch, fptemp); // 將異或結果寫入中間文件
if(i == pwdlen) { // 使得原文件每和密碼長度相同的固定長度異或加密
i = 0;
}
} // while

fclose(fp); // 關閉打開原文件
fclose(fptemp); // 關閉打開中間文件

remove(filename); // 刪除原文件
rename(filenametemp, filename); // 將中間文件重命名為原文件
printf("加密/解密成功\n"); // 至此加密/解密成功

}

// 密碼輸入以"******"顯示
void inputpass(char *pass) {
int i = 0;
char c;
while(isprint(c = getch())) {
pass[i++] = c;
// printf("*");
}
pass[i] = '\0';
printf("\n");
}

⑶ C語言編寫文件加密程序

#include<stdio.h>

charDigitNot(charch){
charc=0,t;
inti;
for(i=0;i<8;++i){
t=ch&(1<<(7-i));
if(t)continue;
c=((c>>(7-i))+1)<<(7-i);
}
returnc;
}

char*StrNot(char*sourstr,char*deststr){
inti;
for(i=0;sourstr[i];++i)
deststr[i]=DigitNot(sourstr[i]);
deststr[i]=0;
returndeststr;
}

intmain(){
FILE*infile,*outfile;
charch,c,str1[]="012aboc靚";
charstr2[10];
printf("%s<==>%s ",str1,StrNot(str1,str2));//加密
printf("%s<==>%s ",str2,StrNot(str2,str1));//解密
infile=fopen("su","rb");
outfile=fopen("sum","wb");
if(infile==NULL||outfile==NULL){
printf("不能打開文件。 ");
return1;
}
while(fread(&ch,1,1,infile)==1){
c=DigitNot(ch);
fwrite(&c,1,1,outfile);
}
fclose(infile);
fclose(outfile);
return0;
}

⑷ 用C語言設計一個文件加密與解密程序

c語言文件加密和解密方法如下:

1、首先打開VC++6.0;


4、聲明頭文件

#include<stdio.h>

#include<stdlib.h>

#include<string.h>


首先寫個加密函數,演算法就是簡介里說的;

voidEncryptFile(FILE*sfp,FILE*dfp,charpwd)
{
charch;
if(sfp==0||dfp==0)
{
printf("ERROR! ");
return;
}
while((ch=fgetc(sfp))!=EOF)
{
if((ch>='a')&&(ch<='z'))
{
ch=(ch-'a'+1)%26+'a';
ch=ch^pwd;
}
if((ch>='A')&&(ch<='Z'))
{
ch=(ch-'A'+1)%26+'A';
ch=ch^pwd;
}
fputc(ch,dfp);
}
}

寫解密子函數:與加密的過程相反;

voidDecryptFile(FILE*sfp,FILE*dfp,charpwd)
{
charch;
while((ch=fgetc(sfp))!=EOF)
{
if((ch>='a')&&(ch<='z'))
{
ch=ch^pwd;
ch=(ch-'a'+25)%26+'a';
}
if((ch>='A')&&(ch<='Z'))
{
ch=ch^pwd;
ch=(ch-'A'+25)%26+'A';
}
fputc(ch,dfp);
}
}

輸出函數,輸出文件內容
voidOutputFile(FILE*fp)
{
charch;
while((ch=fgetc(fp))!=EOF)
putchar(ch);
}
主函數,主要調用這幾個函數
intmain()
{
/*用戶輸入的要加密的文件名*/
charsfilename[20];
/*用戶輸入加密後保存的文件名*/
chardfilename[20];
/*用來保存密碼字元*/
charpwd;
FILE*sfp,*dfp;

printf(": ");
/*得到要加密的文件名*/
gets(sfilename);
/*得到加密後你要的文件名*/
printf(": ");
gets(dfilename);
/*得到加密字元*/
printf("PleaseinputyourPassword: ");
//scanf("%c",&pwd);
pwd=getch();
/*屏幕以*來表示輸入的加密字元*/
printf("* ");
/*以只讀方式打開要加密的文件*/
if((sfp=fopen(sfilename,"r"))==0)
{
printf("Can'topenthefile:%s ",sfilename);
exit(0);
}
/*輸出要加密的文件*/
printf(": ");
OutputFile(sfp);
/*建立加密後的文件*/
if((dfp=fopen(dfilename,"w+"))==0)
{
printf("Can'topenorcreatethefile:%s ",dfilename);
//exit(0);
}
/*文件加密*/
fseek(sfp,0L,SEEK_SET);
EncryptFile(sfp,dfp,pwd);
printf(" Encryptedthefilesuccessfully! ");
/*輸出加密後的文件*/
printf(": ");
fseek(dfp,0L,SEEK_SET);
OutputFile(dfp);
fclose(sfp);
fclose(dfp);
getch();
return0;
}

⑸ 如何使用C語言編寫一個文件夾加密器

1.文件夾加密是操作系統才能實現的功能,C語言處理不了,除非調用系統的命令。C語言可以直接加密文件本身。

2.加密,是以某種特殊的演算法改變原有的信息數據,使得未授權的用戶即使獲得了已加密的信息,但因不知解密的方法,仍然無法了解信息的內容。例如對稱演算法亦或加密。

3.什麼是異或演算法
異或的特點是原始值經過兩次異或某一個數後會變成原來的值,所以有時利用這個特性來進行加密,加密端把數據與一個密鑰進行異或操作,生成密文。接收方收到密文後利用加密方提供的密鑰進行再次異或操作就能得到明文。

4.常式:

/*以DWORD為單位對文件進行加密,將每個DWORD與0xfcba0000(密鑰)做異或,寫入另一個文件*/
#include<stdio.h>
#include<stdlib.h>
#defineDWORDunsignedlong
#defineBYTEunsignedchar
#definefalse0
#definetrue1
intmain(intargc,char*argv[])
{
FILE*hSource;
FILE*hDestination;

DWORDdwKey=0xfcba0000;
char*pbBuffer;
DWORDdwBufferLen=sizeof(DWORD);
DWORDdwCount;
DWORDdwData;
if(argv[1]==0||argv[2]==0)
{
printf("missingargument! ");
returnfalse;
}
char*szSource=argv[1];
char*szDestination=argv[2];

hSource=fopen(szSource,"rb");//打開源文件.
hDestination=fopen(szDestination,"wb");//打開目標文件
if(hSource==NULL){printf("openSourceFileerror!");returnfalse;}
if(hDestination==NULL){printf("openDestinationFileerror!");returnfalse;}

//分配緩沖區
pbBuffer=(char*)malloc(dwBufferLen);

do{
//從源文件中讀出dwBlockLen個位元組
dwCount=fread(pbBuffer,1,dwBufferLen,hSource);
//加密數據
dwData=*(DWORD*)pbBuffer;//char*TOdword
dwData^=dwKey;//xoroperation
pbBuffer=(char*)&dwData;
//將加密過的數據寫入目標文件
fwrite(pbBuffer,1,dwCount,hDestination);
}while(!feof(hSource));

//關閉文件、釋放內存
fclose(hSource);
fclose(hDestination);

printf("%sisencryptedto%s ",szSource,szDestination);
return0;
}