c加密方式
加密和解密演算法是程序編制中的重要一環。試想,如果我們平時使用的騰訊QQ、支付寶支付密碼、今日頭條賬號密碼那麼輕易就被別人盜取的話,很多不可以預料的事情就會發生!
在現實生活中,我們遇到過太多QQ密碼被盜取的情況,有的朋友QQ被盜之後,騙子利用朋友間信任騙取錢財的事情屢見不鮮。支付寶也曾出現過支付寶賬戶被惡意盜取的事件,對用戶利益造成了嚴重損害!這些在技術上都指向了同一相關問題:軟體加密演算法的強壯程度。今天,小編利用C語言來簡單實現一種加密方法。下面是源代碼。
需要說明:程序利用了ascii碼值的按照一定規律變換實現加密,對於解密過程,則是加密的逆過程。下面是程序的運行結果。
4190閱讀
搜索
編程免費課程300節
初學編程100個代碼
java自學一般要學多久
5秒破解excel密碼
python必背100源代碼
40歲零基礎學編程
Ⅱ C語言加密演算法(簡單)
MD5是HASH演算法,他不能用來解密的,他主要是用來校驗信息的完整型,也就是我們常說的數值簽名,你可以去RFC文檔上收索,上邊有他具體的演算法,代碼也是封裝好了的,可以去研究研究
Ⅲ c語言中的文件加密
//自己寫的加密,加密方法就是根據輸入的密碼對文件中的內容進行異或後存放在加密後的文件中
//轉載請聲明program by STU caige
#include<stdio.h>
#include<stdlib.h>
#include <conio.h>//getche()需要
#include<string.h>
char ch;
//異或函數
int YiHuo(FILE *f0,FILE *fp,int passwordnum,int move,char key)
{
while(fread(&ch,1,1,f0),!feof(f0))
{
if (key==49)//加密
{
ch=ch+move;
(char)(ch^=passwordnum);
fwrite(&ch,1,1,fp);
}
if (key==50)//解密
{
(char)(ch^=passwordnum);
ch=ch+move;
fwrite(&ch,1,1,fp);
}
}
}
int main()
{
//encrypt加密 decrypt解密
FILE *f0,*fe,*fd;
char fname0[50];
char efname[50]={0};
char dfname[50]={0};
char Password[50]={0},key=0,key2=0;
char sysfname[20]={0};
int p=0,passwordnum,move=0;//異或後移動的次數 ;
system("cls");
do
{
system("cls");
do
{
printf("1-----------加密文件\n");
printf("2-----------解密文件\n");
printf("Esc----------退出\n") ;
key=getch();//讀入一個鍵盤碼
}
while ((key!='1')&&(key!='2')&&(key!=27));
Password[50]=0;
passwordnum=0;
if (key==49)
{
system("cls");
printf("請輸入要加密的文件絕對路徑\n");
scanf("%s",fname0);
// while(key=0)
//打開原文件
if ((f0=fopen(fname0,"rb"))==NULL)
{
printf("文件打不開哦!\n");
key=0;//文件打開失敗時key的值改變
exit(0);
printf("加密失敗\n");
system("pause");
}
//只有文件fname0打開成功時才能繼續打開efname
if(key==49)
{
system("cls");
printf("請輸入完成加密的文件存儲路徑\n");
scanf("%s",efname);
if ((fe=fopen(efname,"w+"))==NULL)
{
printf("文件打不開哦!\n");
printf("加密失敗\n");
fclose(f0);
system("pause");
exit(0);
key=0;
}
}
//如果打開文件成功則開始輸入密碼
if(key==49)
{
system("cls");
printf("請輸入密碼\n");
scanf("%s",Password);
//把字元密碼轉化為整形來異或
for(p=0;Password[p]!=0;p++)
passwordnum+=((int)Password[p]);
move=(int)(passwordnum%9);
while (move>9)
move=(int)(move%9);
printf("%d",move);system("pause");
}
if (key==49)
{//異或加密
system("cls");
YiHuo(f0,fe,passwordnum,move,key);
printf("\n加密成功,您的輸出文件路徑為:\n");
printf("%s",efname);
fclose(f0);
fclose(fe);
}
}
if (key==50)
{
system("cls");
printf("請輸入要解密的文件絕對路徑\n");
scanf("%s",fname0);
// while(key=0)
//打開原文件
if ((f0=fopen(fname0,"rb"))==NULL)
{
printf("文件打不開哦!\n");
key=0;//文件打開失敗時key的值改變
exit(0);
printf("解密失敗\n");
system("pause");
}
//只有文件fname0打開成功時才能繼續打開dfname
if(key==50)
{
system("cls");
printf("請輸入完成解密的文件存儲路徑\n");
scanf("%s",dfname);
if ((fd=fopen(dfname,"w+"))==NULL)
{
printf("解密失敗");
fclose(f0);
system("pause");
printf("文件打不開哦!\n");
exit(0);
key=0;
}
}
//如果打開文件成功則開始輸入密碼
if(key==50)
{
system("cls");
printf("請輸入密碼\n");
scanf("%s",Password);
//把字元密碼轉化為整形來異或
for(p=0;Password[p]!=0;p++)
passwordnum+=((int)Password[p]);
move=(int)(passwordnum%9);
while (move>9)
move=(int)(move%9);
move=(-move);
}
if (key==50)
{//異或加密
system("cls");
YiHuo(f0,fd,passwordnum,move,key);
printf("\n解密成功,您的輸出文件路徑為:\n%S",dfname);
system("pause");
fclose(f0);
fclose(fd);
}
}
}
while(key!=27);//當key為0,即讀寫兩個文件都打開成功時才結束循環
return 0;
printf("\n謝謝使用!,program by STU caige\n");
system("pause");
}
Ⅳ c語言文件加密和解密
c語言文件加密和解密方法如下:
1、首先打開VC++6.0;
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;
}