【C/C++学院】0801-重定向以及文件扫描/二进制加密解密/简单加密/按照密码加密/动态库与静态库

重定向以及文件扫描

#define   _CRT_SECURE_NO_WARNINGS//关闭安全检查

#include<stdio.h>

#include<stdlib.h>

void main1()

{

       char str[100] = { 0 };

       scanf("%s", str);

       printf("str=%s\n", str);

       system(str);

}

void main2()

{

       char str[100] = { 0 };

       fscanf(stdin,"%s", str);

       fprintf(stdout,"str=%s\n", str);

       system(str);

}

void  main3()

{

       char *path = "C:\\Users\\wuyq\\Desktop\\newcmd.txt";     

       int num=0;

       char docmd[30] = { 0 };

       scanf("%d%s", &num, docmd);//接受键盘输入

       FILE *pf;

       pf = fopen(path, "w");//写入

       if (pf == NULL)

       {

              printf("文件打开失败");

       }

       else

       {

              fprintf(pf, "for /l %%i in (1,1,%d) do %s", num, docmd);

              fclose(pf);

       }

       system("pause");

}

void main4()

{

       char cmd[100] = { 0 };

       int num = 0;

       char docmd[30] = { 0 };

       char *path = "C:\\Users\\wuyq\\Desktop\\newcmd.txt";

       FILE *pf = fopen(path, "r");//读取

       if (pf == NULL)

       {

              printf("文件打开失败");

              return;

       }

       else

       {

              fscanf(pf, "for /l %%i in (1,1,%d) do %s", &num, docmd);

              printf("num=%d,docmd=%s", num, docmd);

       }

       system("pause");

}

void main()

{

       int num ;

       scanf("num=%d", &num);//必须精确对应

       printf("num=%d", num);

       system("pause");

}

二进制加密解密

#define  _CRT_SECURE_NO_WARNINGS//关闭安全检查

#include<stdio.h>

#include<stdlib.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;//获取文件大小

       }

}

void copy(char *oldpath, char *newpath)

{

       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 = (char *)malloc(length*sizeof(char));//分配内存,读取文件

              fread(p, sizeof(char), length, pfr);//读取二进制到内存

              fwrite(p, sizeof(char), length, pfw);//写入二进制到文件         

              fclose(pfr);//关闭文件

              fclose(pfw);

       }

}

void jia(char *oldpath, char *newpath)

{

       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 = (char *)malloc(length*sizeof(char));//分配内存,读取文件

              fread(p, sizeof(char), length, pfr);//读取二进制到内存

              for (int i = 0; i < length; i++)

              {

                     p[i] ^= 'A';//抑或

              }            

              fwrite(p, sizeof(char), length, pfw);//写入二进制到文件

              fclose(pfr);//关闭文件

              fclose(pfw);

       }

}

void jie(char *oldpath, char *newpath)

{

       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 = (char *)malloc(length*sizeof(char));//分配内存,读取文件

              fread(p, sizeof(char), length, pfr);//读取二进制到内存

              for (int i = 0; i < length; i++)

              {

                     p[i] ^= 'A';//解密

              }

              fwrite(p, sizeof(char), length, pfw);//写入二进制到文件

              fclose(pfr);//关闭文件

              fclose(pfw);

       }

}

void main()

{

     char  *oldpath = "C:\\Users\\wuyq\\Desktop\\calc.exe";

       char  *newpath = "C:\\Users\\wuyq\\Desktop\\calc.exe";

       char  *newjiepath = "C:\\Users\\wuyq\\Desktop\\calc.exe";

       jia(oldpath, newpath);

       jie(newpath, newjiepath);

       system("pause");

}

简单加密

#define  _CRT_SECURE_NO_WARNINGS//关闭安全检查

#include<stdio.h>

#include<stdlib.h>

// 'a' ->'b'

//hello -> ifmmp

//textjjia.txt

//textjie.txt

//按照字节的方式加密

char jiami(char ch)

{

       return ch ^ 123;

}

char jiemi(char ch)

{

       return ch  ^123;

}

void jia(char *path, char *pathjia)

{

       FILE *pfr, *pfw;

       pfr = fopen(path, "r");//读取

       pfw = fopen(pathjia, "w");//写入

       if (pfr == NULL || pfw == NULL)

       {

              return;

       }

       else

       {

              while (!feof(pfr))//到了文件末尾1,没有到就是0

              {

                     char  ch = fgetc(pfr);//读取字符

                     putchar(ch);

                     fputc(jiami(ch), pfw);//写入一个加密的字符

              }

              fclose(pfr);

              fclose(pfw);//关闭文件

       }

}

void jie(char *path, char *pathjie)

{

       FILE *pfr, *pfw;

       pfr = fopen(path, "r");//读取

       pfw = fopen(pathjie, "w");//写入

       if (pfr == NULL || pfw == NULL)

       {

              return;

       }

       else

    {

              while (!feof(pfr))//到了文件末尾1,没有到就是0

              {

                     char  ch = fgetc(pfr);//读取字符

                     putchar(ch);

                     fputc(jiemi(ch), pfw);//写入一个加密的字符

              }

              fclose(pfr);

              fclose(pfw);//关闭文

       }

}

void main()

{

       char *path = "C:\\Users\\yincheng01\\Desktop\\text.txt";

       char *pathjia = "C:\\Users\\yincheng01\\Desktop\\textjia.txt";

       char *pathjie = "C:\\Users\\yincheng01\\Desktop\\textjie.txt";

       jia(path, pathjia);

       jie(pathjia, pathjie);

       system("pause");

}

void main1()

{

       FILE *pfr;

       char *path = "C:\\Users\\yincheng01\\Desktop\\text.txt";

       pfr = fopen(path, "r");

       if (pfr == NULL)

       {

              printf("文件打开失败");

       }

       else

       {

              printf("\n原来的资料\n");

              while (!feof(pfr))//feof没有到文件末尾返回0,到了返回1

              {

                     char ch=fgetc(pfr);//从文件读取一个字符

                     putchar(ch);//输出字符

              }

              rewind(pfr);//回到文件开头

              printf("\n加密后的资料\n");

              while (!feof(pfr))//feof没有到文件末尾返回0,到了返回1

              {

                     char ch = fgetc(pfr);//从文件读取一个字符

                     putchar(ch+1);//输出字符

              }

              fclose(pfr);//关闭文件

       }

       system("pause");

}

按照密码加密

#define  _CRT_SECURE_NO_WARNINGS//关闭安全检查

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

//加密,按照密码 

// 文件加密

// 字符串加密

char * stringjiami(char *password, char *string);

//字符串解密

char * stringjiemi(char *password, char *jiastring);

void filejiami(char *path, char *pathjia, char *password);

void filejiemi(char *pathjia, char *pathjie, char *password);

#define  _CRT_SECURE_NO_WARNINGS//关闭安全检查

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

//加密,按照密码 

// 文件加密

// 字符串加密

char * stringjiami(char *password, char *string);

//字符串解密

char * stringjiemi(char *password, char *jiastring);

void filejiami(char *path, char *pathjia, char *password);

void filejiemi(char *pathjia, char *pathjie, char *password);

#include"密码加密.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 * stringjiami(char *password, char *string)

{

         int passlength = strlen(password);//获取加密长度

         int stringlength = strlen(string);//获取字符串长度

         if (stringlength %passlength ==0)

         {

                   int ci = stringlength /passlength;//循环次数

                   for (int i = 0; i < ci; i++)//循环次

                   {

                            for (int j =0 ; j < passlength; j++)//循环密码

                            {

                                     string[passlength*i+j] ^= password[j];//异或加密

                            }

                   }

         }

         else

         {

                   int ci = stringlength / passlength;//循环次数

                   for (int i = 0; i < ci; i++)//循环次

                   {

                            for (int j = 0; j < passlength; j++)//循环密码

                            {

                                     string[passlength*i + j] ^= password[j];//异或加密

                            }

                   }

                   int lastlength = stringlength%passlength;//剩下的长度

                   for (int i = 0; i < lastlength; i++)

                   {

                            string[passlength*(stringlength/passlength)+i] ^= password[i];

                   }

         }

         return  string;

}

//字符串解密

char * stringjiemi(char *password, char *jiastring)

{

         int passlength = strlen(password);//获取加密长度

         int stringlength = strlen(jiastring);//获取字符串长度

         if (stringlength %passlength == 0)

         {

                   int ci = stringlength / passlength;//循环次数

                   for (int i = 0; i < ci; i++)//循环次

                   {

                            for (int j = 0; j < passlength; j++)//循环密码

                            {

                                     jiastring[passlength*i + j] ^= password[j];//异或加密

                            }

                   }

         }

         else

         {

                   int ci = stringlength / passlength;//循环次数

                   for (int i = 0; i < ci; i++)//循环次

                   {

                            for (int j = 0; j < passlength; j++)//循环密码

                            {

                                     jiastring[passlength*i + j] ^= password[j];//异或加密

                            }

                   }

                   int lastlength = stringlength%passlength;//剩下的长度

                   for (int i = 0; i < lastlength; i++)

                   {

                            jiastring[passlength*(stringlength / passlength) + i] ^= password[i];

                   }

         }

         return  jiastring;

}

void filejiami(char *path, char *pathjia, char *password)

{

         FILE *pfr,*pfw;

         pfr = fopen(path, "r");

         pfw = fopen(pathjia, "w");

         if (pfr == NULL || pfw == NULL)

         {

                   fclose(pfr);

                   fclose(pfw);

                   return;

         }

         else

         {

                   int length = getfilesize(path);//获取长度   430

                   //int passlength = strlen(password);//获取密码20

                   char *newstr = (char*)malloc(sizeof(char)*(length+1));

                   for (int i = 0; i < length; i++)

                   {

                            char ch = fgetc(pfr);//获取一个字符

                            newstr[i] = ch;//不断存入字符

                            //fputc(newstr[i], pfw);//挨个写入字符

                   }

                   newstr[length] = '\0';//字符串处理为'\0'

                   stringjiami(password, newstr);//加密字符串

                   for (int i = 0; i < length ; i++)

                   {

                            fputc(newstr[i], pfw);//挨个写入字符

                   }      

                   fclose(pfr);

                   fclose(pfw);//关闭文件

         }

}

void filejiemi(char *pathjia, char *pathjie, char *password)

{

         FILE *pfr, *pfw;

         pfr = fopen(pathjia, "rb");

         pfw = fopen(pathjie, "wb");

         if (pfr == NULL || pfw == NULL)

         {

                   fclose(pfr);

                   fclose(pfw);

                   return;

         }

         else

         {

                   while (!feof(pfr))

                   {

                            char string[256] = { 0 };

                            fgets(string, 256, pfr);

                            stringjiemi(password, string);//加密啊

                            fputs(string, pfw);//写入jie密文件

                   }

                   fclose(pfr);

                   fclose(pfw);//关闭文件

         }

}

#define  _CRT_SECURE_NO_WARNINGS//关闭安全检查

#include<stdio.h>

#include<stdlib.h>

#include"密码加密.h"

void   main()

{

         char string[50] = "锄禾日当午";

         char *password = "123";

         printf("%s\n", stringjiami(password, string));

         printf("%s\n", stringjiami(password, string));

         char *path = "C:\\Users\\yincheng01\\Desktop\\text.txt";

         char *pathjia = "C:\\Users\\yincheng01\\Desktop\\textjia.txt";

         char *pathjie = "C:\\Users\\yincheng01\\Desktop\\textjie.txt";

         //printf("%d\n", getfilesize(path));

         filejiami(path, pathjia, "ABCDE");

         filejiami(pathjia, pathjie, "ABCDE");

         system("pause");

}

动态库与静态库

静态库

Lib.h

void msg();

int  add(int a, int b);

Lib.c

#include<stdio.h>

#include<stdlib.h>

#include<Windows.h>

void msg()

{

         MessageBoxA(0, "1", "2", 0);

}

int  add(int a, int b)

{

         return a + b;

}

Main.c

#include<stdio.h>

#include<stdlib.h>

#include"lib.h"

#pragma comment(lib, "静态库与动态库.lib")

//头文件只是说明,lib自己已经存在接口

void main()

{

         printf("%d", add(10, 9));

         msg();

}

动态库

Dll.c

#include<stdio.h>

#include<stdlib.h>

#include<Windows.h>

//导出函数,可以加载的时候调用

_declspec(dllexport) void msg()

{

         MessageBoxA(0, "1", "2", 0);

}

//导出函数,可以加载的时候调用

_declspec(dllexport) int  add(int a, int b)

{

         return a + b;

}

Main.c

#include<stdio.h>

#include<stdlib.h>

#include<Windows.h>

typedef void  (*pmsg)();//简化函数指针

typedef int(*padd)(int a, int b);//简化函数指针

void main()

{

         HMODULE mydll = LoadLibraryA("动态库.dll");

         if (mydll == NULL)

         {

                   printf("动态库加载失败");

         }

         else

         {

                   pmsg pmsg1;//定义一个函数指针

                   pmsg1 = (pmsg)GetProcAddress(mydll, "msg");//获取函数地址

                   if (pmsg1 != NULL)

                   {

                            pmsg1();//执行

                   }

                   padd padd1;//定义函数指针

                   padd1 = (padd)GetProcAddress(mydll, "add");

                   if (padd1 != NULL)

                   {

                            printf("\n%d", padd1(10, 29));

                   }

         }

         FreeLibrary(mydll);

         system("pause");

}
时间: 2025-01-21 03:26:55

【C/C++学院】0801-重定向以及文件扫描/二进制加密解密/简单加密/按照密码加密/动态库与静态库的相关文章

文件流 二进制-C++文件流二进制加解密问题

问题描述 C++文件流二进制加解密问题 最近在编一个加密程序,想通过fstream来对文件进行操作.想用文件流实现在文件中的二进制模二加,求助大神们. fstream finout: finout.open(filename,ios_base::binary):接下来就不知道怎么做了,不想用fwrite

Linux编译多个不同目录下的文件以及静态库、动态库的使用

先看两篇博文,作为基础知识.如果对C/C++编译链接过程都了解的话,可以跳过不看. http://www.firedragonpzy.com.cn/index.php/archives/2556 http://www.cppblog.com/shifan3/archive/2007/01/05/17325.html     一.  编译不同目录下的多个文件   各个文件的布局如下:         head.h文件的代码:   [cpp] view plaincopy     #ifndef  

android中对文件加密解密的实现_Android

现在项目里面有一个需求,本项目里面下载的视频和文档都不允许通过其他的播放器播放,在培训机构里面这样的需求很多.防止有人交一份钱,把所有的课件就拷给了别人.这样的事情培训机构肯定是不愿意的.现在我项目里面也出了这么个需求.下面介绍一下我的实现. 文件加解密的流程及原理 1.加密方法:存储文件时,从输入流中截取文件的字节数组,对字节数组进行加密,至于加密的方式和算法就可以视需求而定了,然后把加密后的字节数组写入到文件中,最后生成加密后的文件: 2.解密方法:同加密方法一样,只不过是对字节数据进行解密

【C/C++学院】0826-文件重定向/键盘输入流/屏幕输出流/字符串输入输出/文件读写简单操作/字符文件读写二进制与文本差别/get与getline挖掘数据/二进制与文本差别/随机位置/多线程初级

文件重定向 #include<iostream> using namespace std; void main() { char str[30] = { 0 }; cin >> str; cout << str; system(str); cerr << "error for you"; cin.get(); cin.get(); } 键盘输入流 #include<iostream> #include <stdlib.h

微软更新iOS版Office Lens文件扫描应用,新增沉浸式阅读器功能

微软近日宣布更新了iOS版Office Lens文件扫描应用. Office Lens是微软推出的袖珍型扫描仪,能将白板或黑板上的笔记转化为数字内容,方便你找到重要文档或名片,拍照以供参考.Office Lens可以剪裁和强化文档图片,识别其中的文字,此外还能将图像转为可编辑的Word和PowerPoint文件. 现在该应用还可以提供沉浸式阅读( Immersive Reader)模式,该功能于2015年4月首次推出,它提供了一个舒适的方式来阅读你扫描文件的文本内容.这种阅读模式可以调整文本的字

php目录文件扫描程序(转)

这段代码来自php教程cms觉得很好,所以拿出来分享给大家,有需要的朋友可以参考一下. /**  * 文件扫描  * @param $filepath     目录  * @param $subdir       是否搜索子目录  * @param $ex           搜索扩展  * @param $isdir        是否只搜索目录  * @param $md5   是否生成MD5验证码  * @param $enforcement  强制更新缓存  */ function sc

ExactScan 2.16发布 文件扫描解决方案

ExactScan是一个现代化文件扫描解决方案,具有200多种不同的文档扫描仪的驱动程序,包括:Ahttp://www.aliyun.com/zixun/aggregation/29935.html">vision, Fujitsu, HP, Kodak, Oki, Visioneer and Xerox等. ExactScan是一款用于家庭办公和团体的通用文件扫描应用程序.其目的是用于高速的文件扫描仪,并能在每分钟轻松地处理上百个图像,包括全重扫描.主要功能是文件管理.分类,编辑单页文件

ExactScan 2.16.1发布 文件扫描解决方案

ExactScan是一个现代化文件扫描解决方案,具有200多种不同文档扫描仪的驱动程序,包括:Ahttp://www.aliyun.com/zixun/aggregation/29935.html">vision, Fujitsu, HP, Kodak, Oki, Visioneer and Xerox等. ExactScan是一款用于家庭办公和团体的通用文件扫描应用程序.其目的是用于高速的文件扫描仪,并能在每分钟轻松地处理上百个图像,包括全重扫描.主要功能是文件管理.分类,编辑单页文件到

Android实现二维码扫描和生成的简单方法_Android

这里简单介绍一下ZXing库.ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口.Zxing可以实现使用手机的内置的摄像头完成条形码的扫描及解码.该项目可实现的条形码编码和解码.目前支持以下格式:UPC-A,UPC-E.EAN-8,EAN-13.39码.93码.ZXing是个很经典的条码/二维码识别的开源类库,以前在功能机上,就有开发者使用J2ME运用ZXing了,不过要支持JSR-234规范(自动对焦)的手机才能发挥其威力. ZXing