二进制文件简单加密

#define  _CRT_SECURE_NO_WARNINGS       //关闭安全监察
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *path = "C:\\1.jpg";           //创建指针指向路径
char *pathjia = "C:\\1jia.jpg";     //加密后文件
char *pathjie = "C:\\1jie.jpg";     //解密后文件

int getbinsize(char *path)          //获取文件大小
{ 
    FILE *pfr = fopen(path, "rb");  //文件指针  打开文件
    if(pfr == NULL )            //判断是否打开成功
    {
        return -1;
    }
    else
    {
        int ch;               //ch设置为int型
        int length = 0;
        while(ch = fgetc(pfr)!=EOF)       //遍历整个文件
        {
            length++;
        }
        return length;         //返回大小
    }

}



void binwithpassword(char *path, char *newpath, char *password)            // 密码方式加密函数
{
    int newch;
    FILE *pfr = fopen(path, "rb");      //以二进制可读方式打开文件
    FILE *pfw = fopen(newpath, "wb");  //可写方式打开
    if (pfr == NULL || pfw == NULL)
    {
        return ;
    }
      else
    {

        int i = 0;
        int passlength = strlen(password);  // 密码长度
        int ch;
        while(ch = fgetc(pfr)!=EOF)   //遍历文件
        {
            newch = ch ^ password[i];     //异或加密方法                //ch ^ password[i%passlength];
            i++;                                          //  i++;  一直循环下去
        }
        if(i == passlength)
        {
            i = 0;
        }
        fputc(newch, pfw);   //输出加密后的
    }


    fclose(pfr);
    fclose(pfw);      //打开一个文件 就对应关闭




}



void main()
{
    binwithpassword(path, pathjia, "huichenyang");
    binwithpassword(pathjia, pathjie, "huichenyang");

    system("pause");
}
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值