//编译环境VS2013#define  _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>int getFileSize(char *path)
{FILE *pf = fopen(path, "r");if (pf == NULL){return-1;}else{fseek(pf, 0, SEEK_END); //文件指针移动到文件末尾int length = ftell(pf);return length;}
}//字符串加密
char *stringEncrypt(char *password, char *string)
{int passLength = strlen(password); //获取加密长度  int stringLength = strlen(string); //获取字符串长度  if (stringLength%passLength == 0)//字符串长度是密码长度的整数倍  {int times = stringLength / passLength;for (int i = 0; i < times; i++){for (int j = 0; j < passLength; j++){string[i*passLength + j] ^= password[j];//这里的下标计算画图很容易理解  }}}else{int times = stringLength / passLength;for (int i = 0; i < times; i++){for (int j = 0; j < passLength; j++){string[i*passLength + j] ^= password[j];}}int lastLength = stringLength%passLength;//不能整除的,也就是余数长度  for (int i = 0; i < lastLength; i++){string[passLength*(stringLength / passLength) + i] ^= password[i];//这里的解密要从前边已经整除完成的后一个位置开始,  //假如说stringLength = 10,passLength = 4;那么除不尽的加密就从下标8开始,  //(10 / 4)*4 = 8.  }}return string;
}
//字符串解密算法
char *stringDecode(char *password, char *string)
{int passLength = strlen(password); //获取加密长度  int stringLength = strlen(string); //获取字符串长度  if (stringLength % passLength == 0)//字符串长度是密码长度的整数倍  {int times = stringLength / passLength;for (int i = 0; i < times; i++){for (int j = 0; j < passLength; j++){string[i*passLength + j] ^= password[j];}}}else{int times = stringLength / passLength;for (int i = 0; i < times; i++){for (int j = 0; j < passLength; j++){string[i*passLength + j] ^= password[j];}}int lastLength = stringLength%passLength;//不能整除的,也就是余数长度  for (int i = 0; i < lastLength; i++){string[passLength*(stringLength / passLength) + i] ^= password[i];//这里的解密要从前边已经整除完成的后一个位置开始,  //假如说stringLength = 10,passLength = 4;那么除不尽的加密就从下标8开始,  //(10 / 4)*4 = 8.  }}return string;
}//加密
void Encrypt(char *oldPath, char *newPath, char *password)
{FILE *pfr, *pfw;pfr = fopen(oldPath, "rb");//以二进制读取pfw = fopen(newPath, "wb");if (pfr == NULL || pfw == NULL){fclose(pfr);fclose(pfw);return;}else{int length = getFileSize(oldPath);//获取原文件大小char *p = malloc(length*sizeof(char));//为新文件申请空间fread(p, sizeof(char), length, pfr);//读取二进制到文件stringEncrypt(password, p);fwrite(p, sizeof(char), length, pfw);//写入二进制到文件//文件操作完成之后关闭文件fclose(pfr);fclose(pfw);}
}
//解密
void decode(char *oldPath, char *newPath, char *password)
{FILE *pfr, *pfw;pfr = fopen(oldPath, "rb");//以二进制读取pfw = fopen(newPath, "wb");if (pfr == NULL || pfw == NULL){fclose(pfr);fclose(pfw);return;}else{int length = getFileSize(oldPath);//获取原文件大小char *p = malloc(length*sizeof(char));//为新文件申请空间fread(p, sizeof(char), length, pfr);//读取二进制到文件stringDecode(password, p);fwrite(p, sizeof(char), length, pfw);//写入二进制到文件//文件操作完成之后关闭文件fclose(pfr);fclose(pfw);}
}void main()
{char *oldPath = "F:\\My Program\\20160313心型动态图.exe";char *newPath = "F:\\My Program\\20160313心型动态图a_password.exe";char *newDePath = "F:\\My Program\\20160313心型动态图b_password.exe";int length = getFileSize(oldPath);char *password = "ABCDE";printf("%d\n", length);Encrypt(oldPath, newPath, password);decode(newPath, newDePath, password);system("pause");
}

原exe文件执行效果

加密后不能打开

解密后,正常打开

【加密解密】对exe文件的加密解密 含源代码》相关推荐

  1. exew文件加密:利用破解版exe文件加密器对exe文件进行加密保护(图文教程)

    exew文件加密:利用破解版exe文件加密器对exe文件进行加密保护(图文教程) 目录 加密过程步骤 解密过程步骤 加密过程步骤 解密过程步骤

  2. 一键自动发布ipa(更新svn,拷贝资源,压缩资源,加密图片资源,加密数据文件,加密lua脚本,编译代码,ipa签名,上传ftp)...

    一键自动发布ipa(更新svn,拷贝资源,压缩资源,加密图片资源,加密数据文件,加密lua脚本,编译代码,ipa签名,上传ftp) 程序员的生活要一切自动化,更要幸福^_^. 转载请注明出处http: ...

  3. m3u8合并解密 TS视频文件分片合并解密

    m3u8合并解密 TS视频文件分片合并解密 M3U8是一种纯文本文件格式,用于指定要按顺序播放的媒体文件列表.它通常用于通过互联网传输音频和视频内容,并受到包括VLC和QuickTime在内的许多媒体 ...

  4. (转)一键自动发布ipa(更新svn,拷贝资源,压缩资源,加密图片资源,加密数据文件,加密lua脚本,编译代码,ipa签名,上传ftp)...

    转自:http://www.cnblogs.com/mrblue/p/3885043.html 一键自动发布ipa(更新svn,拷贝资源,压缩资源,加密图片资源,加密数据文件,加密lua脚本,编译代码 ...

  5. ViKey加密狗对视频文件进行加密

    ViKey加密狗对视频文件进行加密 如果你手里有重要的视频文件,不想被别人随意看到,任意播放,那么你可以将这类视频文件用ViKey文件加密工具加密一下,加密过后的视频文件,必须要有ViKey加密狗才可 ...

  6. java 文件 加解密_Java实现文件的加密解密功能示例

    Java实现文件的加密解密功能示例 发布时间:2020-10-05 22:05:15 来源:脚本之家 阅读:86 作者:FC WORLD!!! 本文实例讲述了Java实现文件的加密解密功能分享给大家供 ...

  7. java实现文件加密与解密_Java实现文件的加密解密功能示例

    本文实例讲述了Java实现文件的加密解密功能分享给大家供大家参考,具体如下: package com.copy.encrypt; import java.io.File; import java.io ...

  8. java对sha1的解密_Java实现文件的加密解密功能示例

    本文实例讲述了java实现文件的加密解密功能分享给大家供大家参考,具体如下: package com.copy.encrypt; import java.io.file; import java.io ...

  9. java大文件存储加密_Java IO--实现文件的加密解密

    我们知道文件存储的方式在计算机当中是以字节的方式进行存储的,可以通过对文件字节的操作来实现文件的加密. 下面的例子是通过读取文件的字节,然后使字节中的每一位取反(1变0,0变1),再进行倒置,来实现加 ...

最新文章

  1. 从疫情到求职寒冬,我的算法求职经历
  2. gin构建包含模板的二进制文件
  3. c++学习笔记之成员函数
  4. std::make_any
  5. 将uglifyjs添加到鼠标右键菜单
  6. Java命令行界面(第26部分):CmdOption
  7. as3调用外部swf里的类的方法
  8. SringBoot/Cloud/Aalibab 事务管理
  9. 在线安装docker
  10. 命令行输入mysql不行_MySQL命令行无法插入中文数据
  11. shell编程之进阶篇四简单流程控制
  12. Intelj IDEA的pom.xml显示错误can not reconnect
  13. 苹果十年,焦虑在哪?
  14. python编程100个小程序-【Python精华】100个Python练手小程序
  15. python中scrapy框架项目_Python -- Scrapy 框架简单介绍(Scrapy 安装及项目创建)
  16. 2017初赛普及c语言答案,NOIP2017初赛普及组C++试题
  17. 保定学院计算机编程,惠普HP打印机驱动程序安装失败怎么办hewlett-packard上的文件...
  18. 01 超级搜索术——信息搜索:全面、快速查找全网你想要的任何信息、情报
  19. android启动页广告图,一张图搞定APP启动页广告
  20. App Store 审核指南 2017-12-13

热门文章

  1. Microsoft Visual C++Build Tools安装包丢失或损坏【解决方案】
  2. (三)webpack入门——webpack功能集合的demo
  3. 笔记本上在哪找计算机,笔记本电脑的摄像头在哪里打开|笔记本打开摄像头的方法...
  4. 工作汇报PPT模板制作,这些要点要留意
  5. 工资结算系统(针对财务部特别实用)
  6. 发送缓冲区sk_wmem_queued
  7. Windows下安装Curses库 + 查看pip所支持whl版本
  8. 系统崩溃:都是紫光拼音惹得祸
  9. 优雅关闭consul
  10. php7.2.7curl扩展,如何使用PHP 7安装ext-curl扩展?