012-文件的加密和解密

#include<stdlib.h>
#include<stdio.h>
#include<string.h>


// 加密函数
// 异或: 1^1 = 0 0^0 = 0 1^0 =1
void encrypt(char normal_path[], char crypt_path[], char password[]){
    // 打开文件
    FILE *normal_fp = fopen(normal_path, "rb");
    FILE *crypt_fp = fopen(crypt_path, "wb");

    // 一次读取一个字符
    int ch;
    int i = 0;
    int pwd_len = strlen(password);

    while((ch= fgetc(normal_fp))!= EOF){
        fputc(ch^password[i%pwd_len], crypt_fp);
        if (i ==pwd_len) {
            i = 0;
        } else {
            i++;
        }
    }
    fclose(normal_fp);
    fclose(crypt_fp);
}

// 解密函数
void decrypt(char crypt_path[], char decry_path[], char password[]){
    // 打开文件
    FILE *crypt_fp = fopen(crypt_path, "rb");
    FILE *decrypt_fp = fopen(decry_path, "wb");

    // 一次读取一个字符
    int ch = 0;
    int i = 0;
    int pwd_len = strlen(password);

    while((ch = fgetc(crypt_fp))!=EOF){
        fputc(ch^password[i%pwd_len], decrypt_fp);
        if (i == pwd_len){
            i = 0;
        }else{
            i++;
        }
    }
    fclose(crypt_fp);
    fclose(decrypt_fp);
}

int main() {
    // 文件加密和解密
    // meizi.jpg 存放在当前目录下
    char normal_path[] = "meizi.jpg";
    char crypt_path[] = "meizi_crypt.jpg";
    char decrpty_path[] = "meizi_decrypt.jpg";
    //加密
    encrypt(normal_path, crypt_path, "password");
    //解密
    decrypt(crypt_path, decrpty_path,"password");
    return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值