做文件锁时,遇到的问题,希望各位高手帮忙。
这是文件锁的一个函数,功能是对对话框上输入的(txt)文件进行加密(即对输入的文件里面的内容加密),并将加密后的内容输出到该文件里面。//加密函数
void Cwenjiansuo::Onjiami()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);//把对话框上控件中输入的文件地址,传到m_jiamilujing.GetBuffer(50),可以不用管
//加密代码
Init();// 初始化维吉尼亚方阵,不用管
FILE *fp;
fp=fopen(m_jiamilujing.GetBuffer(50),"r+");//打开待加密的文件
if(fp==NULL)
{
printf("cannot open the file!\n");
}
char ch,string1[256]={'\0'}; //里面存放待加密的字符串并初始化
ch=fgetc(fp);
int i=1,k=0;
do
{
char string2[256]={'\0'};
int j=0;
while((i<256)&&(!feof(fp)))//每次从文件读255个字符,
{
i++;
string1[j]=ch;
j++;
ch=fgetc(fp);
}
Encode(m_jiamimiyao.GetBuffer(50), string1, string2);//加密 m_jiamimiyao.GetBuffer(50):密钥 string1:待加密的字符串 string2:经过加密后的字符串可以不用管。即此时string2里面的就是加密后的内容。
fseek(fp,k,SEEK_SET);
fputs(string2,fp);
k=k+strlen(string1);
}while(!feof(fp));//直到文件的结束
m_jiamilujing.ReleaseBuffer();
m_jiamimiyao.ReleaseBuffer();
fclose(fp);
}
大家帮我看一下里面的逻辑有没有错,。为什么我的结果是,加密文件时,可以把很小的文件加密成几百 M 啊?期待高手。