H.H 文件
/*
此程序仅供学习使用,不可作为商业用途。
*/
class Key
{
public:
Key(); //基础构造函数,当前无用
Key(char*,char*); //拷贝构造函数,间接调用SetK函数
~Key(); //析构函数,当前无用
void SetK(char*,char*); //装载并重新设置环境,参数1为即将加密或解密的字符串,参数2为密匙
void AdK(); //开始加密
void SuK(); //开始解密
char* RetDat(); //返回加密或解密后的数据
private:
char
*tKey, //密匙
*tDat; //数据
};
CPP.CPP 文件
#include "H.H"
Key::Key()
{
"实验程序构造";
}
Key::Key(char* d,char* k)
{
SetK(d,k);
}
void Key::SetK(char* d,char* k)
{
tDat=d;
tKey=k;
}
void Key::AdK()
{
int tmp=0,ad=0;
while (*(tKey+tmp)!='\0')
{
ad=ad+(*(tKey+tmp));
tmp++;
}
tmp=0;
while (*(tDat+tmp)!='\0')
{
*(tDat+tmp)=(*(tDat+tmp))+(ad*828228+ad*ad);
tmp++;
}
}
void Key::SuK()
{
int tmp=0,ad=0;
while (*(tKey+tmp)!='\0')
{
ad=ad+(*(tKey+tmp));
tmp++;
}
tmp=0;
while (*(tDat+tmp)!='\0')
{
*(tDat+tmp)=(*(tDat+tmp))-(ad*828228+ad*ad);
tmp++;
}
}
char* Key::RetDat()
{
return tDat;
}
Key::~Key()
{
"实验程序析构";
}
程序在Windows XP下使用Visual C++ 6.0编译通过,测试成功,以下是测试程序核心代码:
char a1[1000],ke[1000];
printf("请输入文本:");
scanf("%s",a1);
printf("请输入密匙:");
scanf("%s",ke);
Key a;
a.SetK(a1,ke);
a.AdK();
printf("加密后: %s\n\n",a.RetDat());
a.SuK();
printf("解密后: %s\n\n",a.RetDat());
getch();