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

简介: <h1 style="font-family:'Microsoft YaHei UI','Microsoft YaHei',SimSun,'Segoe UI',Tahoma,Helvetica,sans-serif,'Microsoft YaHei',Georgia,Helvetica,Arial,sans-serif,宋体,PMingLiU,serif; font-size:1.4em"

重定向以及文件扫描

#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");

}







目录
相关文章
|
算法 安全 数据安全/隐私保护
Crypto++库支持多种加密算法
【10月更文挑战第29天】Crypto++库支持多种加密算法
516 4
|
存储 NoSQL 数据库
认证服务---整合短信验证码,用户注册和登录 ,密码采用MD5加密存储 【二】
这篇文章讲述了在分布式微服务系统中添加用户注册和登录功能的过程,重点介绍了用户注册时通过远程服务调用第三方服务获取短信验证码、使用Redis进行验证码校验、对密码进行MD5加密后存储到数据库,以及用户登录时的远程服务调用和密码匹配校验的实现细节。
认证服务---整合短信验证码,用户注册和登录 ,密码采用MD5加密存储 【二】
|
存储 算法 数据库
使用python hashlib模块给明文字符串加密,以及如何撞库破解密码
`hashlib` 是 Python 中用于实现哈希功能的模块,它可以将任意长度的输入通过哈希算法转换为固定长度的输出,即散列值。该模块主要用于字符串加密,例如将用户名和密码转换为不可逆的散列值存储,从而提高安全性。`hashlib` 提供了多种哈希算法,如 `md5`、`sha1`、`sha256` 等。
300 1
|
9月前
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
1091 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
11月前
|
算法 网络安全 区块链
2023/11/10学习记录-C/C++对称分组加密DES
本文介绍了对称分组加密的常见算法(如DES、3DES、AES和国密SM4)及其应用场景,包括文件和视频加密、比特币私钥加密、消息和配置项加密及SSL通信加密。文章还详细展示了如何使用异或实现一个简易的对称加密算法,并通过示例代码演示了DES算法在ECB和CBC模式下的加密和解密过程,以及如何封装DES实现CBC和ECB的PKCS7Padding分块填充。
250 4
2023/11/10学习记录-C/C++对称分组加密DES
|
存储 Java 数据库
密码专辑:对密码加盐加密,对密码进行md5加密,封装成密码工具类
这篇文章介绍了如何在Java中通过加盐和加密算法(如MD5和SHA)安全地存储密码,并提供了一个密码工具类PasswordUtils和密码编码类PasswordEncoder的实现示例。
427 10
密码专辑:对密码加盐加密,对密码进行md5加密,封装成密码工具类
|
NoSQL Java Redis
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
这篇文章介绍了如何使用Spring Boot整合Apache Shiro框架进行后端开发,包括认证和授权流程,并使用Redis存储Token以及MD5加密用户密码。
309 0
shiro学习四:使用springboot整合shiro,正常的企业级后端开发shiro认证鉴权流程。使用redis做token的过滤。md5做密码的加密。
|
安全 算法 Java
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
本文提供了在数据库中对密码等敏感信息进行加盐加密的详细教程,包括手写MD5加密算法和使用Spring Security的BCryptPasswordEncoder进行加密,并强调了使用BCryptPasswordEncoder时需要注意的Spring Security配置问题。
959 0
数据库信息/密码加盐加密 —— Java代码手写+集成两种方式,手把手教学!保证能用!
|
存储 安全 算法
RSA在手,安全我有!Python加密解密技术,让你的数据密码坚不可摧
【9月更文挑战第11天】在数字化时代,信息安全至关重要。传统的加密方法已难以应对日益复杂的网络攻击。RSA加密算法凭借其强大的安全性和广泛的应用场景,成为保护敏感数据的首选。本文介绍RSA的基本原理及在Python中的实现方法,并探讨其优势与挑战。通过使用PyCryptodome库,我们展示了RSA加密解密的完整流程,帮助读者理解如何利用RSA为数据提供安全保障。
380 5
|
安全 数据安全/隐私保护 Python
情书也能加密?Python AES&RSA,让每一份数据都充满爱的密码
【9月更文挑战第8天】在这个数字化时代,情书不再局限于纸笔,也可能以电子形式在网络中传递。为了确保其安全,Python提供了AES和RSA等加密工具,为情书编织爱的密码。首先,通过安装pycryptodome库,我们可以利用AES对称加密算法高效保护数据;接着,使用RSA非对称加密算法加密AES密钥和IV,进一步增强安全性。即使情书被截获,没有正确密钥也无法解读内容。让我们用Python为爱情编织一张安全的网,守护每份珍贵情感。
196 2
下一篇
oss云网关配置