c++怎么编写程序实现文件加密和解密?
1个回答
展开全部
#include <iostream>
#define BufLength 100
void Encrypted_Decrypt(char* filepath, char* sec, int seclegth)
{
FILE * file = fopen(filepath, "r+");
if (NULL == file)
{
std::cout << "打开文件出错" << std::endl;
return;
}
char buffer[BufLength];
char secret[BufLength];
int n = 0;
while ((n = fread(buffer, 1, BufLength, file))> 0)
{
for (int i = 0; i < n; i++)
secret[i] = buffer[i] ^ sec[i % (seclegth + 1)];//加密
fseek(file, -n, SEEK_CUR);//移动字符串头在文件中的位置
fwrite(secret, 1, n, file);//覆盖写入秘文
fseek(file, n, SEEK_CUR);//移动字符串尾在文件中的位置,下次循环读取下一串
}
fclose(file);
}
int main()
{
std::cout << "输入密码:";
char psw[256];
std::cin >> psw;
std::cout << "加密或者解密文件(全路径如d:/1.txt):";
char filepath[256];
std::cin >> filepath;
Encrypted_Decrypt(filepath, psw, strlen(psw));
return 0;
}
#define BufLength 100
void Encrypted_Decrypt(char* filepath, char* sec, int seclegth)
{
FILE * file = fopen(filepath, "r+");
if (NULL == file)
{
std::cout << "打开文件出错" << std::endl;
return;
}
char buffer[BufLength];
char secret[BufLength];
int n = 0;
while ((n = fread(buffer, 1, BufLength, file))> 0)
{
for (int i = 0; i < n; i++)
secret[i] = buffer[i] ^ sec[i % (seclegth + 1)];//加密
fseek(file, -n, SEEK_CUR);//移动字符串头在文件中的位置
fwrite(secret, 1, n, file);//覆盖写入秘文
fseek(file, n, SEEK_CUR);//移动字符串尾在文件中的位置,下次循环读取下一串
}
fclose(file);
}
int main()
{
std::cout << "输入密码:";
char psw[256];
std::cin >> psw;
std::cout << "加密或者解密文件(全路径如d:/1.txt):";
char filepath[256];
std::cin >> filepath;
Encrypted_Decrypt(filepath, psw, strlen(psw));
return 0;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询