NDK C语言 文件的加解密

文件的加解密

/**
 * 文件的加解密
 */
#include <stdio.h>
#include <stdlib.h>

int main() {
    // 目标文件
    char *fileName = "E:\\CProject\\file\\string.txt";
    // 加密后文件
    char *fileEncodeName = "E:\\CProject\\file\\stringEncode.txt";
    // 解密后文件
    char *fileDecodeName = "E:\\CProject\\file\\stringDecode.txt";
    // rb 读取二进制数据
    FILE *file = fopen(fileName, "rb");
    // wb 写入二进制数据
    FILE *fileEncode = fopen(fileEncodeName, "wb");
    if (!file || !fileEncode) {
        printf("文件打开失败,查看文件路径!\n");
        exit(0);
    }

    /**
     * 加密 和 解密 的 思路:
     * 加密 == 破坏文件
     * 解密 == 还原文件
     *
     * 加密的想法:把每一个字节都拿出来,对每一个字节都全部处理
     * 解密的想法:把每一个字节都拿出来,对每一个字节都还原处理
     *
     * 一个值两次异或运算后,结果为原来的值,即 a ^ b = c; c ^ b = a;
     * 故使用 ^(异或)进行加解密
     */

    // TODO 加密
    int c; // 接收读取的值
    int key = 5; // 秘钥
    // fgetc(文件指针)  返回值 EOF = end fo file
    while ((c = fgetc(file)) != EOF) {
        // 加密操作
        fputc(c ^ key, fileEncode); // 写入到 fileEncode
    }
    printf("文件加密成功!\n");
    // 关闭文件
    fclose(file);
    fclose(fileEncode);

    // TODO 解密
    // rb 读取二进制数据
    fileEncode = fopen(fileEncodeName, "rb");
    // wb 写入二进制数据
    FILE *fileDecode = fopen(fileDecodeName, "wb");
    if (!fileEncode || !fileDecode) {
        printf("文件打开失败,查看文件路径!\n");
        exit(0);
    }

    // fgetc(文件指针)  返回值 EOF = end fo file
    while ((c = fgetc(fileEncode)) != EOF) {
        // 解密操作
        fputc(c ^ key, fileDecode); // 写入到 fileDecode
    }
    printf("文件解密成功!\n");
    // 关闭文件
    fclose(fileEncode);
    fclose(fileDecode);

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sziitjin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值