如何用C语言简单加密文件+

本文介绍了一个用C语言实现的文件加密解密程序,通过用户密码循环异或原文件数据的十分之一,增强了加密安全性,支持任意大小和类型的文件。

上一篇文章写完以后,收到了很多朋友的私信,希望我能写出一个较为完善的利用C语言简单加密文件的代码,今天花了点时间终于调试完了,相比于上一篇文章的代码的话这里做了一些改进:

  • 1.加密文件的数据改为原文件数据的十分之一,这样将摆脱文件大小的限制
  • 2.使用用户口令对需加密数据进行循环异或操作,增强了加密的安全性
  • 3.为用户完善了任意路径文件的加密解密操作,增强用户体验

看过我上一篇文章的朋友应该知道,上一次我们只对文件头的前20个字节的数据进行加密,其实这个加密的范围是会受到文件大小的影响的,这一次我们加密文件数据的十分之一,将可以不受任意文件大小的影响,并且上一次的代码中我们让用户输入123,并使每个文件数据与123进行异或,这一次我们允许用户输入10个以内的任意字符(例如:password),并且使文件的第一个数据与‘p’所对应的ASCII码进行异或,第二个数据与‘a’所对应的ASCII码进行异或,并以此类推,将所需加密的数据与用户加密口令进行循环异或,这将极大的增强加密文件的安全性。
需要了解我上一篇文章的朋友可以看:C语言简单加密文件

以下是具体实现的代码:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
char file_to_encrypto[100];   //需要加密的文件路径及名称 
char file_to_decrypto[100];   //需要解密的文件路径及名称 
char encrypted_file[50]="encrypted";//加密后的部分文件名 
char decrypted_file[50]="decrypted";//解密后的部分文件名 
char password[10];     //用户输入的密码 
char temp;       //非加密部分的临时数据 
unsigned int length;  //储存原文件长度 
void encrypto()
{
   
   
 printf("请输入您需要加密文件的完整路径:\n");
 scanf("%100s",file_to_encrypto);  //输入需加密文件的完整路径及名称 
 FILE *fp1=fopen(file_to_encrypto,"rb"),*fp2=NULL;  //以rb方式打开需加密的文件 
 if(fp1==NULL)
 {
   
   
  printf("打开文件失败!请检查您的文件路径是否正确\n");
 }else{
   
   
  fseek(fp1,0,2);   //使光标移动到文件末尾 
  length=ftell(fp1);  //返回文件的大小 
  unsigned char* data=(unsigned char*)malloc(length/10); //我们这里加密原文件数据的十分之一 
  int i,j;
  for(i=strlen(file_to_encrypto)-1;i>0;i--) //这里进行一个文件格式(后缀名)的截取 
  {
   
        
   if(file_to_encrypto[i]=='.')  //从文件名末尾往前查找到第一个'.'号,将其后的文件后缀名添加到加密文件民的末尾 
   {
   
            //若需加密文件本身没有文件后缀名,则加密后文件名也没有后缀名,即文件名为 encrypted 
    int p=0;
    for(j=i;j<strlen(file_to_encrypto);j++,p++)</
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

monster663

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

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

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

打赏作者

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

抵扣说明:

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

余额充值