当前位置:首页 » 密码管理 » c简单加密字符串

c简单加密字符串

发布时间: 2022-09-20 01:41:52

㈠ C语言中最简单的字符串加密解密问题!!!!希望大家帮帮忙,分不是问题 !!

加密解密的算法都没错,错的是解密程序里的文件操作方法。
rewind(fp)没有必要。因为fp已经被close了。
一般不推荐同时对一个文件又读又写,因为这样会导致很多缓冲区同步的问题。比如:
fputc()和getc()之间,必须要调用fflush(fp);
即使这样,还是会有问题。比如回车,getc()可能会返回两个字符,\n和\a。但是用fputc()写入的时候,分别写入\n和\a会把第二行第一个字符覆盖掉。

正确的做法是:
先把解密的数据保存到字符串里,全部结束之后,一次性把解密完的字符串写到文件里去。

void main()
{
char ch,name[30];
char content[1000];
int n = 0;
FILE *fp;
printf("name:\a");
gets(name);
fp = fopen(name,"r+");
if(fp==NULL)
{
printf("No file: %s!\n\a",name);
return;
}
ch = getc(fp);
while(ch!=EOF)
{
if((isalpha(ch))!=0)
{
if((ch >= 'a' && ch <= 'd') || (ch >= 'A' && ch <='D'))
ch = ch + 22;
else
ch = ch - 4;
}
content[n++] = ch;
ch = getc(fp);
//ch = getc(fp);
}
content[n] = 0;
rewind(fp);
fprintf(fp, "%s", content);
fclose(fp);

printf("%s ok\a\n",name);
printf("content: %s\n", content);
printf("\n");
}

㈡ C语言字符串加密

问题不小,你表面用的是C
但是,好多地方不符合C的语法
,,比如:
for
(int
i=0;
str[i]
!=
'\0';
i++)
还有,就是你好像没有弄清楚
,你要做什么似的,有好多无用的东西,
就像你的函数里的,key
,虽然你提到key了,但是你根本没有使用key,你只是使用45来进行加密,,还有就是一个文件
的大小,是不确定的,你用一个100个字符的字符串来存,有点那个不安全了,,如果稍长一点就会出问题,产生运行时错误。其实你这个加密和解密是一个可逆过程,用一个函数,就可以了,具体你想要的也不是太明白,就给你弄了一个简单一点加密和解密程序
,输入输出不是同一个文件
,不知道是不是你想要的。
#include

#include

#include

void
Decrypt()
{
char
fname[FILENAME_MAX];
char
fname2[FILENAME_MAX];
FILE*
fp;
FILE*
fp1;
int
key;
char
c;
printf("输入要加/解密文件的路径:\n");
scanf("%s",
fname);
printf("请输入密钥:\n");
scanf("%d",&key);
strcpy(fname2,fname);
strcat(fname2,".txt");
if(
(fp
=
fopen(fname,"r+"))
==
NULL)
{
printf("error");
exit(1);
}
if(
(fp1
=
fopen(fname2,"w+"))
==
NULL)
{
printf("error");
exit(1);
}
while(
(c
=
fgetc(fp))
!=
EOF)
{
c
=
c^key;
fputc(c,fp1);
}
fcloseall();
}
int
main()
{
Decrypt();
return
0;
}
如果想看一些好一点的加密算法
,我这里有一些,联系我发给你
,,

㈢ C语言对字符进行加密

if(e>='A'&&e<='W')//
e+=3;
elseif(e>='X'&&e<='Z')
e-=23;
else
{
...//donotencryptordosomethingelse
}

㈣ C语言设计一个简单的加密解密程序

C语言设计一个简单的加密解密程序如下:
加密程序代码:
#include<stdio.h>
main()
{
char c,filename[20];
FILE *fp1,*fp2;
printf("请输入待加密的文件名:\n");
scanf("%s",filename);
fp1=fopen(filename,"r");
fp2=fopen("miwen.txt","w");
do
{
c=fgetc(fp1);
if(c>=32&&c<=126)
{
c=c-32;
c=126-c;
}
if(c!=-1)
fprintf(fp2,"%c",c);
}
while(c!=-1);
}
解密程序代码:
#include<stdio.h>
#include<string.h>
main()
{
char c,filename[20];
char yanzhengma[20];
FILE *fp1,*fp2;
printf("请输入待解密文件名:\n");
scanf("%s",filename);
printf("请输入验证码:\n");
scanf("%s",yanzhengma);
if(strcmp(yanzhengma,"shan")==0)
{
fp1=fopen(filename,"r");
fp2=fopen("yuanwen.txt","w");
do
{
c=fgetc(fp1);
if(c>=32&&c<=126)
{
c=126-c;
c=32+c;
}
if(c!=-1)
fprintf(fp2,"%c",c);
}
while(c!=-1);
}
else
{
printf("验证码错误!请重新输入:\n");
scanf("%s",filename);
}
}

㈤ [高分]C语言对字符串的加密和解密

char
ch,name[30],over;
FILE
*fp;
printf("请输入要加密的文件名(正确的做法是:先把解密的数不知道,你想要什么样的加密算法。
AES不错。不过AES是对16个字节长度加密,要是不是16的倍数,处理有点麻烦据保存到字符串里,全部结束之后,一次性把解密

㈥ C语言如何进行字符加密

进行字符加密是很多种的。
数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码为“密文”,使其只能在输入相应的密钥之后才能显示出原容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。 该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。

㈦ C语言怎么加密字符

#include<stdio.h>
#include<string.h>
intmain()
{
charstr[]="00000",str2[]="00000",*p=str,*p2=str2;
printf("输入5个字母:");
while(*p!=0)
{
scanf("%c",p);
if(*p==' ')
continue;
if(*p<'A'||(*p>'Z'&&*p<'a')||*p>'z')//输入验证,必须是字母
{
printf("只能输入字母,请重新输入 ");
p=str;
p2=str2;
fflush(stdin);//输入有错重新输入前清空缓冲区。fflush属于c扩展函数,正常使用没问题,如需在linuxggc上使用,考虑多次调用getchar函数来清空
}
else
{
*p2=(*p)+4;
if(*p2>90&&*p2<97)//大写字母加4,最大位不超出
*p2='A'+(*p2-90)-1;
if(*p2>122)//小写字母加4,最大位不超出
*p2='a'+(*p2-122)-1;
p2++;
p++;
}
}

printf("原字符串为:%s 加密后的字符串为:%s ",str,str2);
return0;
}

㈧ C语言 字符串加密

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
intmain(void)
{
charc[100];
intk;
intlen,i,temp;

scanf("%s",c);
scanf("%d",&k);

len=(int)strlen(c);
k=k%26;

for(i=0;i<len;i++)
{
if(c[i]>='a'&&c[i]<='z')
{
if(c[i]+k>'z')
{
temp='z'-c[i];
temp=k-temp-1;
c[i]='a'+temp;
}
else
{
c[i]+=k;
}
}
elseif(c[i]>='A'&&c[i]<='Z')
{
if(c[i]+k>'Z')
{
temp='Z'-c[i];
temp=k-temp-1;
c[i]='A'+temp;
}
else
{
c[i]+=k;
}
}
else
{
/*donothing*/
}
}

printf("%s ",c);

return0;
}

㈨ C语言字符串按要求加密 求教

void encryp(char *plain,char *cipher)这个函数你写复杂了,如下就可以了——

void encryp(char *plain,char *cipher){
int i;

for(i=0;plain[i];i++)

cipher[i]=plain[i]-24;

cipher[i]='\0';

}

这样加密就完结了。

热点内容
内置存储卡可以拆吗 发布:2025-05-18 04:16:35 浏览:335
编译原理课时设置 发布:2025-05-18 04:13:28 浏览:378
linux中进入ip地址服务器 发布:2025-05-18 04:11:21 浏览:612
java用什么软件写 发布:2025-05-18 03:56:19 浏览:32
linux配置vim编译c 发布:2025-05-18 03:55:07 浏览:107
砸百鬼脚本 发布:2025-05-18 03:53:34 浏览:943
安卓手机如何拍视频和苹果一样 发布:2025-05-18 03:40:47 浏览:739
为什么安卓手机连不上苹果7热点 发布:2025-05-18 03:40:13 浏览:803
网卡访问 发布:2025-05-18 03:35:04 浏览:511
接收和发送服务器地址 发布:2025-05-18 03:33:48 浏览:371