您的位置:

c语言加密储存,c语言数据加密程序

本文目录一览:

如何用C语言对文件进行加密和解密?

对于加密要求不高的完全可以自己定义规则来进行加密。这种加密是很简单很自由的,例如你在存文件的时候可以将文件中的每个字符都加上一个数,然后读取该文件的时候再每个字符相应地减去那个数,即可实现就简单的加密,这样你储存的文件看上去就是乱码了。只是这个规则太简单,规则你可以自己定,加密与解密对着来就行了。

下面程序用异或操作对文件进行加密和解密

/****************** 设计思路 ******************/

// 根据用户输入的加密/机密密码,

// 每次都拿原文件和密码等长度的一个字符串和密码

// 对应元素异或进行加密/解密

// 另外因为是用异或方法,所以加密和解密就是同一个程序

// 即按照同样的加密即是对文件的解密

#include stdio.h

#include string.h

#include ctype.h

#include conio.h

#include stdlib.h

char filename[256]; // 原文件

char password[256]; // 加密/解密密码

const char filenametemp[] = "temp15435255435325432543.temp"; // 加密/解密中间文件

void inputpass(char *pass); //密码输入以"******"显示

void main() {

FILE *fp; // 加密/解密的文件

FILE *fptemp; // 加密/解密过程临时文件

int pwdlen; // 密码长度

int i = 0; // 计数器

char ch = 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"); // 至此加密/解密成功

}

// 密码输入以"******"显示

void inputpass(char *pass) {

int i = 0;

char c;

while(isprint(c = getch())) {

pass[i++] = c;

// printf("*");

}

pass[i] = '\0';

printf("\n");

}

c语言 读取完文件加密后如何储存并修改呢 求助

大概的改了一下,有什么问题,再问吧

#include stdio.h

#include stdlib.h

#include math.h

#include string.h

#include conio.h  /*建议加入此头文件,以利于getch()的调用*/

char buffer[100] = {0};

static int c = 1;

int get_text()

{

int i = 0;

char file_name[100] = "a.txt";

FILE *fp;

if ((fp = fopen(file_name, "r")) == NULL)

{

fprintf(stderr, "can't find file %s!\n", file_name);

return -1;   

}

 

while(i  5)

{

while(1)

{

char ch = fgetc(fp);  

if (ch != EOF)

{

buffer[i++] = ch;

}

else

{

break;   // 到达文件结尾了

}

}

buffer[i] = '\0';  

fclose(fp); 

//printf("nihao \n");

printf("%s\n", buffer); // 输出结果 

return 0;

}

}

int set_psw(char *psw)

{

int i = 0;

char file_name[100] = "b.txt";

FILE *fp;

if ((fp = fopen(file_name, "w+")) == NULL)

{

fprintf(stderr, "can't find file %s!\n", file_name);

return -1;   

}

fputs(psw, fp);

fclose(fp); 

return 0;

}

int jiami()

{

char a[256];

int i;

//printf("请输入要加密的数字\n");

//scanf("%s",a);

if (get_text() != 0)

{

return -1; 

for(i = 0; i = strlen(buffer); i++)

{

a[i] = buffer[i];

}

for(i = 0 ; i  strlen(a); i++)

{

a[i] = a[i] + c;

}

if (set_psw(a) != 0)

{

return -1; 

}

printf("加密后的密码为: %s。已保存在b.txt文件中。\n", a);

printf("***************\n");

printf("***************\n");

return 0;

}

int jiemi()

{

char b[256];

int i; 

scanf("%s", b);

for(i = 0 ; i  strlen(b); i++)

{

b[i] = b[i] - c;

}

printf("解密后的密码为:%s\n", b);  

printf("***************\n");

printf("***************\n");

printf("***************\n");

return 0;

}

void mima(int c)

{

printf("设置成功\n");

printf("********\n");

printf("********\n");

printf("********\n");

}

int main()

{

int a;

while (1)

{

printf("*************************  0   退出程序     *************************\n");

printf("*************************  1   进行加密     *************************\n");

printf("*************************  2   进行解密     *************************\n");

printf("*************************  3   设置密钥     *************************\n");

printf("你要进行的操作是\n");

scanf("%d", a);

switch(a)

{

case 0:

exit(0);

break; // 这里的break是匹配switch的 

case 1:

printf("请输入要加密的数字\n");

jiami();

continue; // 这里的continue是匹配while(1)的 

case 2:

printf("请输入要解密的数字\n");

jiemi();

continue; // 这里的continue是匹配while(1)的 

case 3:

printf("请输入四位数密钥\n");

scanf("%d", c);

mima(c);

continue; // 这里的continue是匹配while(1)的 

}

}

}

C语言文件加密

#includestdio.h

int main()

{char ch;

 FILE *fp1,*fp2;

 fp1=fopen("d:\\file1.txt","r");

 fp2=fopen("d:\\file2.txt","w");

 printf("加密后的内容:\n");

 while((ch=fgetc(fp1))!=EOF)

 {ch^=0x6a; putchar(ch); fputc(ch,fp2);}

 fclose(fp1);

 fclose(fp2);

 printf("\n解密后的内容:\n");

 fp2=fopen("d:\\file2.txt","r");

 while((ch=fgetc(fp2))!=EOF)

 {ch^=0x6a; putchar(ch);} 

 return 0; 

}