c語言密碼加密
加密和解密演算法是程序編制中的重要一環。試想,如果我們平時使用的騰訊QQ、支付寶支付密碼、今日頭條賬號密碼那麼輕易就被別人盜取的話,很多不可以預料的事情就會發生!
在現實生活中,我們遇到過太多QQ密碼被盜取的情況,有的朋友QQ被盜之後,騙子利用朋友間信任騙取錢財的事情屢見不鮮。支付寶也曾出現過支付寶賬戶被惡意盜取的事件,對用戶利益造成了嚴重損害!這些在技術上都指向了同一相關問題:軟體加密演算法的強壯程度。今天,小編利用C語言來簡單實現一種加密方法。下面是源代碼。
需要說明:程序利用了ascii碼值的按照一定規律變換實現加密,對於解密過程,則是加密的逆過程。下面是程序的運行結果。
4190閱讀
搜索
編程免費課程300節
初學編程100個代碼
java自學一般要學多久
5秒破解excel密碼
python必背100源代碼
40歲零基礎學編程
B. c語言加密解密演算法
這里使用的是按位加密,按ASCII碼進行加密的演算法自己寫個,很容易的。
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<string.h>
void
dofile(char
*in_fname,char
*pwd,char
*out_fname);/*對文件進行加密的具體函數*/
void
usage(char
*name);
void
main(int
argc,char
*argv[])/*定義main()函數的命令行參數*/
{
char
in_fname[30];/*用戶輸入的要加密的文件名*/
char
out_fname[30];
char
pwd[10];/*用來保存密碼*/
if(argc!=4)
{/*容錯處理*/
usage(argv[0]);
printf("\nIn-fname:\n");
gets(in_fname);/*得到要加密的文件名*/
while(*in_fname==NULL)
{
printf("\nIn-fname:\n");
gets(in_fname);
}
printf("Password
6-8:\n");
gets(pwd);/*得到密碼*/
while(*pwd==NULL
||
strlen(pwd)>8
||
strlen(pwd)<6)
{
printf("Password
6-8:\n");
gets(pwd);
}
printf("Out-file:\n");
gets(out_fname);/*得到加密後你要的文件名*/
while(*in_fname==NULL)
{
printf("Out-file:\n");
gets(out_fname);
}
while(!strcmp(in_fname,out_fname))
{
printf("文件名不能和源文件相同\n");
printf("Out-file:\n");
gets(out_fname);
}
dofile(in_fname,pwd,out_fname);
printf("加密成功,解密請再次運行程序\n");
}
else
{/*如果命令行參數正確,便直接運行程序*/
strcpy(in_fname,argv[1]);
strcpy(pwd,argv[2]);
strcpy(out_fname,argv[3]);
while(*pwd==NULL
||
strlen(pwd)>8
||
strlen(pwd)<6)
{
printf("Password
faied!\n");
printf("Password
6-8:\n");
gets(pwd);
}
while(!strcmp(in_fname,out_fname))
{
printf("文件名不能和源文件相同\n");
printf("Out-file:\n");
gets(out_fname);
while(*in_fname==NULL)
{
printf("Out-file:\n");
gets(out_fname);
}
}
dofile(in_fname,pwd,out_fname);
printf("加密成功,解密請再次運行程序\n");
}
}
/*加密子函數開始*/
void
dofile(char
*in_fname,char
*pwd,char
*out_file)
{
FILE
*fp1,*fp2;
register
char
ch;
int
j=0;
int
j0=strlen(pwd);
fp1=fopen(in_fname,"rb");
if(fp1==NULL)
{
printf("cannot
open
in-file.\n");
exit(1);/*如果不能打開要加密的文件,便退出程序*/
}
fp2=fopen(out_file,"wb");
if(fp2==NULL)
{
printf("cannot
open
or
create
out-file.\n");
exit(1);/*如果不能建立加密後的文件,便退出*/
}
/*加密演算法開始*/
while(j0>=0)
{
ch=fgetc(fp1);
while(!feof(fp1))
{
fputc(ch^pwd[j>=j0?j=0:j++],fp2);/*異或後寫入fp2文件*/
ch=fgetc(fp1);
}
j0--;
}
fclose(fp1);/*關閉源文件*/
fclose(fp2);/*關閉目標文件*/
}
void
usage(char
*name)
{
printf("\t=======================File
encryption======================\n");
printf("\tusage:
%s
In-fname
password
out_fname\n",name);
printf("\tExample:
%s
file1.txt
12345678
file2.txt\n",name);
}
C. C語言密碼加密,求解釋
很高興能為你解答!這是一個很普通的程序。
char a[5];這串代碼的意思是(定義一個字元數組元素為5個)。
for(i=0;i<5;i++)
{
scanf("%c",&a[i]);
}這串代碼的意思是(用了一個for循環條件為5次,每次要求用戶輸入一個字元,共輸入五次)。
for(m=0;m<5;m++)
{
a[m]=a[m]+4;
}這串代碼也是一個循環體,循環五次,每次都會進行運算表達式,a[m]=a[m]+4;這里的是每次將a[m]+4在賦給a[m]。如果還有什麼不明白可以追問。
D. C語言 簡單對字母進行加密
1、在我們的編輯頁面輸入以下代碼。
E. c語言實現密碼加密
unsignedchar*encrypt(unsignedchar*psw,intenc){
intsum=0,i;
if(enc){
for(i=0;i<6;i++){
psw[i]-=15;
sum+=psw[i];
}
psw[6]=(unsignedchar)sum;
psw[7]=0;
}
else{
for(i=0;i<6;i++){
sum+=psw[i];
psw[i]+=15;
}
if((unsignedchar)sum!=psw[6]){
printf("Badpassword ");
psw[0]=0;
returnpsw;
}
else{
psw[6]=0;
}
}
for(i=0;i<3;i++){
unsignedchart=psw[i];
psw[i]=psw[5-i];
psw[5-i]=t;
}
returnpsw;
}
intmain()
{
unsignedcharpsw[128];
scanf("%s",psw);
printf("encodeto:%s ",encrypt(psw,1));
printf("decodeto:%s ",encrypt(psw,0));
return0;
}
F. 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;
}
G. C語言實現密碼表加密
#include<stdio.h>
#include<stdlib.h>
#define N 1024
int find(char *pt,char c)
{
int i,r=-1;
for(i=0;'\0'!=pt[i];i++)
{
if(c==pt[i])
{
r=i;
break;
}
}
return r;
}
int main()
{
char mingwen[]="";
char miwen[]="";
char buf1[N],buf2[N];
int i,n;
scanf("%s",buf1);
for(i=0;'\0'!=buf1[i];i++)
{
if(-1!=(n=find(mingwen,buf1[i])))
{
buf2[i]=miwen[n];
}
else
{
buf2[i]=buf1[i];
}
}
buf2[i]='\0';
printf("%s\n",buf2);
system("PAUSE");
return EXIT_SUCCESS;
}
H. c語言編寫的程序,在輸入密碼時,如何加密
前言:當今社會是一個信息社會,你的個人信息和聊天記錄極有可能被別有用心的人時時刻刻監視著,那麼你想不想實現專屬於兩個人或一個小圈子的人在社交軟體上的交流不被任何其他人讀懂呢?
下面就給大家提供一個原理極其簡單程序極其容易實現的C語言文字加密小程序的實現演算法。
在鍵盤上錄入了"今天晚上我不回家吃飯了",將這串字元的ASCLL碼全部加1,列印出來是這樣的"掘晚晤市嫌臣假接湊負綠"。怎麼樣,哈哈哈,是不是看完後丈二和尚摸不著頭腦?
所以,用這種演算法實現對漢字的加密和翻譯絕對隱蔽!漢字在計算機中的編碼比較復雜,一個漢字在Windows 10系統下的CodeBlocks編譯器里佔2個字元的位置,我記得我有做過測試,在Cent OS Linux系統下佔3個字元的位置。
然而不管一個漢字占幾個字元的位置,對每個字元的ASCLL碼做加減乘除的運算和逆運算就可以實現對文字的加密和翻譯。
下面向大家展示一下源代碼(加密演算法為將所有字元的ASCLL碼加1,翻譯演算法為將所有字元的ASCLL碼減1):
頭文件部分:
主函數部分:
下面向大家展示一下加密與翻譯的效果:
思考與提高:僅僅將所有字元的ASCLL碼加1就實現對文字信息的加密了,會不會很容易被破譯呢?請恕我不是密碼學專家,這一點我無法回答,但是直觀感覺這樣加密確實有點簡單。
那麼我們就可以對字元進行多種更為復雜的處理,比如給所有字元加上一個正負變換的數列、給所有字元加上斐波那契數列等。總之,直觀感覺就是越復雜越不容易被破譯。
下面向大家展示一下給所有字元加上一個正負變換的數列的加密演算法的源代碼:
頭文件部分:
主函數部分主要是用來調試的,與上面那個簡單加密演算法的主函數部分相同。
下面向大家展示一下使用這種復雜加密演算法加密與翻譯的效果:
用了加密程序後,畫風是這樣的:
I. C語言輸入密碼將其加密怎麼弄
int
main()
{
c1=
getchar();
:
:
c6=
getchar();
c1=c1+20;
:
c6=c6+20;
putchar(c1);
:
putchar(c6);
}
程序大概這個樣子,有什麼問題再追問,手機碼字還有這破輸入法,寫得很難受
J. C語言密碼加密{(回車與刪除怎麼實現)跪求}
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
main()
{
char key[8]={0};//接受8位數密碼
char ch=0;
int i=0,j=0;//循環變數
int number=0;//選擇功能鍵的變數
char temp=0;
printf("〓〓〓〓〓〓〓〓〓〓〓〓〓【密碼加密系統】〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");
printf("\n〖⒈顯示密碼〗\n");
printf("〖⒉加密密碼〗 \n");
printf("〖⒊解密密碼〗 \n");
printf("〖⒋退出程序〗 \n");
printf("\n〓〓〓〓〓〓〓〓〓〓〓〓〓【密碼加密系統】〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓\n");
printf("請輸入8位密碼:");
for(i=0;i<8;i++)
{
ch=getch();
key[i]=ch;
printf("*");
}
while(1)
{
printf("\n請選擇功能 :");
scanf("%d",&number);
if(number<=4)
{
switch(number)
{
case 1:
{
for(i=0;i<9;i++)
if(key[i]=='\r') printf("回車");
else if(key[i]=='\b') printf("退格");
else printf("%c",key[i]);
break;
}
case 2:
{
for(i=0;i<9;i++) key[i]+=5;
temp=key[0];
key[0]=key[8];
key[8]=temp;
for(i=0;i<9;i++) printf("%d",key[i]);
break;
}
case 3:
{
for(i=0;i<9;i++) key[i]-=5;
temp=key[0];
key[0]=key[8];
key[8]=temp;
for(i=0;i<9;i++)
if(key[i]=='\r') printf("回車");
else if(key[i]=='\b') printf("退格");
else printf("%c",key[i]);
break;
}
case 4: exit(0);
}
}
else
{
printf("\n您輸入的功能鍵有誤請重新輸入");
scanf("%d",&number);
}
}
}
/*VC++ 6.0編譯通過。註:從鍵盤輸入的回車是'\r',而不是'\n'*/