c加密解密程序
A. C對一個四位數字加密再解密
#include<stdio.h>
void code(char *p)
{
for(int i=0;i<4;i++)
{
p[i]=(p[i]-41)%10+48;
}
}
void uncode(char *p)
{
for(int i=0;i<4;i++)
{
p[i]=(p[i]-45)%10+48;
}
}
main()
{
char num[4];
printf("請輸入一個4位數:\n");
scanf("%s",num);
code(num);
printf("密文為%s\n",num);
uncode(num);
printf("原數為%s\n",num);
}
B. 如何用c語言對文件進行加密和解密
對於加密要求不高的完全可以自己定義規則來進行加密。這種加密是很簡單很自由的,例如你在存文件的時候可以將文件中的每個字元都加上一個數,然後讀取該文件的時候再每個字元相應地減去那個數,即可實現就簡單的加密,這樣你儲存的文件看上去就是亂碼了。只是這個規則太簡單,規則你可以自己定,加密與解密對著來就行了。
下面程序用異或操作對文件進行加密和解密
/******************設計思路******************/
//根據用戶輸入的加密/機密密碼,
//每次都拿原文件和密碼等長度的一個字元串和密碼
//對應元素異或進行加密/解密
//另外因為是用異或方法,所以加密和解密就是同一個程序
//即按照同樣的加密即是對文件的解密
#include
#include
#include
#include
#include
charfilename[256];//原文件
charpassword[256];//加密/解密密碼
constcharfilenametemp[]="temp15435255435325432543.temp";//加密/解密中間文件
voidinputpass(char*pass);//密碼輸入以"******"顯示
voidmain(){
FILE*fp;//加密/解密的文件
FILE*fptemp;//加密/解密過程臨時文件
intpwdlen;//密碼長度
inti=0;//計數器
charch=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");//至此加密/解密成功
}
//密碼輸入以"******"顯示
voidinputpass(char*pass){
inti=0;
charc;
while(isprint(c=getch())){
pass[i++]=c;
//printf("*");
}
pass[i]='\0'
printf("\n");
}
C. 用C語言編程愷撒密碼加密解密程序
#include<stdio.h>
#defineisletter(c)(((c)>='a'&&(c)<='z')||((c)>='A'&&(c)<='Z'))
voidEnc(constchar*str,char*out,intkey)
{
inti=0;
while(str[i])
{
if(isletter(str[i]))
{
out[i]=str[i]+key;
if(!isletter(out[i]))
out[i]-=26;
}
else
out[i]=str[i];
i++;
}
out[i]=0;
}
voidDenc(constchar*str,char*out,intkey)
{
inti=0;
while(str[i])
{
if(isletter(str[i]))
{
out[i]=str[i]-key;
if(!isletter(out[i]))
out[i]+=26;
}
else
out[i]=str[i];
i++;
}
out[i]=0;
}
intmain()
{
charout[100],out2[100];
Enc("",out,3);
printf("%s ",out);
Denc(out,out2,3);
printf("%s ",out2);
}
D. 用c語言設計一個簡單地加密算,解密演算法,並說明其中的原理
恰巧這兩天剛看的一種思路,很簡單的加密解密演算法,我說一下吧。
演算法原理很簡單,假設你的原密碼是A,用A與數B按位異或後得到C,C就是加密後的密碼,用C再與數B按位異或後能得回A。即(A異或B)異或B=A。用C實現很簡單的。
這就相當於,你用原密碼A和特定數字B產生加密密碼C,別人拿到這個加密的密碼C,如果不知道特定的數字B,他是無法解密得到原密碼A的。
對於密碼是數字的情況可以用下面的代碼:
#include <stdio.h>
#define BIRTHDAY 19880314
int main()
{
long a, b;
scanf("%ld", &a);
printf("原密碼:%ld\n", a);
b = BIRTHDAY;
a ^= b;
printf("加密密碼:%ld\n", a);
a ^= b; printf("解密密碼:%ld\n", a);
return 0;
}
如果密碼是字元串的話,最簡單的加密演算法就是對每個字元重新映射,只要加密解密雙方共同遵守同一個映射規則就行啦。