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

发布时间:2022-11-24

本文目录一览:

  1. 如何用C语言对文件进行加密和解密?
  2. c语言 读取完文件加密后如何储存并修改呢 求助
  3. 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;
}