AES加密算法对”文件“进行加密。。要求用C++实现
答案:3 悬赏:30 手机版
解决时间 2021-04-16 08:47
- 提问者网友:沦陷
- 2021-04-15 13:31
AES加密算法对”文件“进行加密。。要求用C++实现
最佳答案
- 五星知识达人网友:独钓一江月
- 2021-04-15 14:38
1.加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。例如对称算法亦或加密。
2.什么是异或算法
异或的特点是原始值经过两次异或某一个数后会变成原来的值,所以有时利用这个特性来进行加密,加密端把数据与一个密钥进行异或操作,生成密文。接收方收到密文后利用加密方提供的密钥进行再次异或操作就能得到明文。
3.例程:
#include
#include
#define DWORD unsigned long
#define BYTE unsigned char
#define false 0
#define true 1
int main(int argc, char *argv[])
{
FILE *hSource;
FILE *hDestination;
DWORD dwKey=0xfcba0000;
char* pbBuffer;
DWORD dwBufferLen=sizeof(DWORD);
DWORD dwCount;
DWORD dwData;
if(argv[1]==0||argv[2]==0)
{
printf("missing argument!\n");
return false;
}
char* szSource=argv[1];
char* szDestination=argv[2];
hSource = fopen(szSource,"rb");// 打开源文件.
hDestination = fopen(szDestination,"wb"); //打开目标文件
if (hSource==NULL) {printf("open Source File error !"); return false ;}
if (hDestination==NULL){ printf("open Destination File error !"); return false ;}
//分配缓冲区
pbBuffer=(char* )malloc(dwBufferLen);
do {
// 从源文件中读出dwBlockLen个字节
dwCount = fread(pbBuffer, 1, dwBufferLen, hSource);
//加密数据
dwData = *(DWORD*)pbBuffer; //char* TO dword
dwData^=dwKey; //xor operation
pbBuffer = (char *) &dwData;
// 将加密过的数据写入目标文件
fwrite(pbBuffer, 1, dwCount, hDestination);
} while(!feof(hSource));
//关闭文件、释放内存
fclose(hSource);
fclose(hDestination);
printf("%s is encrypted to %s\n",szSource,szDestination);
return 0;
}
2.什么是异或算法
异或的特点是原始值经过两次异或某一个数后会变成原来的值,所以有时利用这个特性来进行加密,加密端把数据与一个密钥进行异或操作,生成密文。接收方收到密文后利用加密方提供的密钥进行再次异或操作就能得到明文。
3.例程:
#include
#include
#define DWORD unsigned long
#define BYTE unsigned char
#define false 0
#define true 1
int main(int argc, char *argv[])
{
FILE *hSource;
FILE *hDestination;
DWORD dwKey=0xfcba0000;
char* pbBuffer;
DWORD dwBufferLen=sizeof(DWORD);
DWORD dwCount;
DWORD dwData;
if(argv[1]==0||argv[2]==0)
{
printf("missing argument!\n");
return false;
}
char* szSource=argv[1];
char* szDestination=argv[2];
hSource = fopen(szSource,"rb");// 打开源文件.
hDestination = fopen(szDestination,"wb"); //打开目标文件
if (hSource==NULL) {printf("open Source File error !"); return false ;}
if (hDestination==NULL){ printf("open Destination File error !"); return false ;}
//分配缓冲区
pbBuffer=(char* )malloc(dwBufferLen);
do {
// 从源文件中读出dwBlockLen个字节
dwCount = fread(pbBuffer, 1, dwBufferLen, hSource);
//加密数据
dwData = *(DWORD*)pbBuffer; //char* TO dword
dwData^=dwKey; //xor operation
pbBuffer = (char *) &dwData;
// 将加密过的数据写入目标文件
fwrite(pbBuffer, 1, dwCount, hDestination);
} while(!feof(hSource));
//关闭文件、释放内存
fclose(hSource);
fclose(hDestination);
printf("%s is encrypted to %s\n",szSource,szDestination);
return 0;
}
全部回答
- 1楼网友:一把行者刀
- 2021-04-15 16:51
- 2楼网友:你可爱的野爹
- 2021-04-15 15:31
这个我不清楚。
给文件加密,我使用的是超级加密3000.
超级加密3000有超快和最强的文件、文件夹加密功能、数据保护功能,文件夹、文件的粉碎删除以及文件夹伪装等功能。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯