文件操作以及加解密

2021-03-15  本文已影响0人  Dalvik_

1.文件的读。

 // fopen打开文件(参数1:文件路径 文件源,  参数2:模式 r(读) w(写)  rb(作为二进制文件读) rw(作为二进制文件写)  返回值 FILE 结构体)
#include <stdio.h>

int main() {
    FILE *file = fopen("F:\\Cproject\\Class1\\acb.txt", "r");
    if (file) {
        char buffer[10];
      // fgets 根据缓存区大小读取文件
        while (fgets(buffer, 10, file)) {
            printf("%s", buffer);
        }
    }
   fclose(file);
    return 0;
}

2.文件的写。

int main() {
    FILE *file = fopen("F:\\Cproject\\Class1\\write.txt", "w");
    if (file) {
        fputs("123121231!!!", file);
    }
    fclose(file);
}

3.文件复制。

int main() {
    FILE *file = fopen("F:\\Cproject\\Class1\\file.txt", "rb");
    FILE *fileCopy = fopen("F:\\Cproject\\Class1\\fileCopy.txt", "wb");
    if (file && fileCopy) {
        char buffer[512];
        int len; // 每次读取的长度
        while ((len = fread(buffer, sizeof(char), 512, file)) != 0) {
            fwrite(buffer, sizeof(char), len, fileCopy);
        }
    }
   // 关闭文件
    fclose(file);
    fclose(fileCopy);
    return 0;
}

4.获取文件的大小。

int main() {
    FILE *file = fopen("F:\\Cproject\\Class1\\file.txt", "rb");
    fseek(file, 0, SEEK_END); // 挪动文件的指针,到文件最末尾
    long file_size = ftell(file); //读取文件指针的位置
    printf("file size:%d\n", file_size);
    // 关闭文件
   fclose(file);
  
}

5.文件加密与文件解密。
文件加密

int main() {
    FILE *file = fopen("F:\\Cproject\\Class1\\file.txt", "rb");
    FILE *fileDecode = fopen("F:\\Cproject\\Class1\\decodeFile.txt", "wb");
    int buffer;
    while ((buffer = fgetc(file)) != EOF) {
        fputc(buffer^4, fileDecode);
    }
    // 关闭文件
   fclose(file);
   fclose(fileDecode);
}

文件解密

int main() {
    FILE *file = fopen("F:\\Cproject\\Class1\\decodeFile.txt", "rb");
    FILE *fileEncode= fopen("F:\\Cproject\\Class1\\encodeFile.txt", "wb");
    int buffer;
    while ((buffer = fgetc(file)) != EOF) {
        fputc(buffer^4, fileEncode);
    }
    fclose(file);
    fclose(fileEncode);
}

6.字符串密码加密与解密。
加密

 
int main() {
    char *fileNameStr = "D:\\Temp\\IMG.jpg"; // 来源
    char * fileNameStrEncode = "D:\\Temp\\IMG_encode.jpg"; // 加密后的目标文件

    // 密钥
    char * password = "123456"; // 我现在做的事情:我的密钥 必须生效

    FILE * file = fopen(fileNameStr, "rb"); // r 必须字节提前准备好文件
    FILE * fileEncode = fopen(fileNameStrEncode, "wb"); // w 创建一个0kb的文件

    if (!file || !fileEncode) {
        printf("文件打开失败,请你个货检测:路径为%s路径的文件,看看有什么问题\n", fileNameStr);
        exit(0); // 退出程序
    }

    int c;
    int index = 0;
    int pass_len = strlen(password);
    while ((c = fgetc(file)) != EOF) {
        char item = password[index%pass_len];
        // 1 2 3 4 5 6  1 2 3 4 5 6  1 2 3 4 5 6 ...

        printf("item:%c%\n", item);
        fputc(c ^ item, fileEncode);
        index ++;
    }

    // 关闭文件
    fclose(file);
    fclose(fileEncode);
}

解密

int main() {

    char * fileNameStr = "D:\\Temp\\IMG_encode.jpg"; // 来源
    char * fileNameStrDecode = "D:\\Temp\\IMG_decode.jpg"; // 解密后的目标文件

    FILE * file = fopen(fileNameStr, "rb"); // r 必须字节提前准备好文件
    FILE * fileDecode = fopen(fileNameStrDecode, "wb"); // w 创建一个0kb的文件

    if (!file || !fileDecode) {
        printf("文件打开失败,请你个货检测:路径为%s路径的文件,看看有什么问题\n", fileNameStr);
        exit(0); // 退出程序
    }

    // 密钥
    char * password = "123456"; // 我现在做的事情:我的密钥 必须生效

    int  c;
    int index = 0;
    int pass_len = strlen(password);
    while ((c = fgetc(file)) != EOF) {
        fputc(c ^ password[index%pass_len], fileDecode);
        index++;
    }

    fclose(file);
    fclose(fileDecode);

    return 0;
}


上一篇下一篇

猜你喜欢

热点阅读