【网安】第一次写的简单加密程序

教学链接:https://www.bilibili.com/video/BV1UG411L74y?p=33&vd_source=01e5c1103fb910315f88a7bdc747b3d5

c语言实现的简单加密程序

1|0核心加密原理:

将文件逐字符读取和密码进行逐位异或运算进行加解密。
异或运算具有自反性:a ^ b ^ a = b
所以a可以用来加密b,再次计算会解密

#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> char ch = '0'; char filename[256]=""; FILE *fp=NULL; FILE *fptemp=NULL; char password[12]="123456"; int pwdlen=0; const char tempfile[256]="temp.temp"; int i=0; void menu(); void inputpass(char *pass); void inputpass(char *pass){ scanf("%s",pass); } void menu() { printf("*******************************************************\n"); printf("***************安全课程小程序***************************\n"); printf("*******************************************************\n"); printf("***************请输入要加密或解密的文件路径***************\n"); printf("***********例如:/user/liang/av.txt*********************\n"); gets(filename); if( NULL == (fp=fopen(filename,"rb"))) { printf("你输入的文件不存在!\n"); exit(1); } printf("文件存在,请输入密码。如:888888888\n"); inputpass(password); pwdlen=(int)strlen(password); if( 0 == pwdlen) { printf("密码不能为空!\n"); exit(2); } fptemp = fopen("temp.temp","wb"); while(1) { ch=getc(fp); if(feof(fp)) { break; } ch^=password[i++]; fputc(ch,fptemp); if(i == pwdlen) { i=0; } } fclose(fp); fclose(fptemp); remove(filename); rename(tempfile,filename); printf("加密或解密成功!\n"); } int main(int argc,char const *argv[]) { menu(); return 0; }

__EOF__

本文作者blanset
本文链接https://www.cnblogs.com/blanset/p/16859616.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   求道之愚者  阅读(49)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示