当前位置:首页 » 密码管理 » c加密解密程序

c加密解密程序

发布时间: 2025-01-02 19:37:55

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;
}
如果密码是字符串的话,最简单的加密算法就是对每个字符重新映射,只要加密解密双方共同遵守同一个映射规则就行啦。

热点内容
数据库未来趋势 发布:2025-01-05 06:20:03 浏览:14
遗传算法中的变异 发布:2025-01-05 06:11:22 浏览:259
ftp文件内容相同 发布:2025-01-05 06:11:18 浏览:761
怎么查询电脑在哪个服务器 发布:2025-01-05 06:02:47 浏览:210
我的世界花雨庭服务器装模组 发布:2025-01-05 05:53:08 浏览:7
cc编译单元什么意思 发布:2025-01-05 05:48:09 浏览:126
c语言大题 发布:2025-01-05 05:41:07 浏览:986
访问五老 发布:2025-01-05 05:14:28 浏览:816
javathrow 发布:2025-01-05 05:11:42 浏览:11
securecrt脚本录制 发布:2025-01-05 04:57:37 浏览:528