352上位机VC MFC实现数据的加密与解密
实现数据的加密与解密
功能展示
数据的加密和解密在我们项目工程中是很常用的功能,我们当前例程实现对指定加密与解密功能,效果如图,输入加密密码和待加密数据后点击<执行加密>程序会将数据进行加密处理并将处理的结果显示出来,点击<执行解密>例程会用输入的加密密码将加密后的字符进行解密,并将解密的结果显示在编辑框中;
要点提示
我们当前例程加密与解密功能的实现是通过GetAt()SetAt()函数将数据与密码提取出来的字符组成新的ASCII码,进而实现数据的加密;
GetAt()返回字符串内指定的单个字符
TCHAR GetAt(int nIndex)const;
nIndex 是返回字符在字符串的位置;
返回的是字符串中的单个字符
SetAt()在字符串指定位置写入字符;
Void GetAt(int nIndex, TCHAR ch);
nIndex为插入字符 的位置;
Ch 要插入的字符;
实现功能
1.新建基于对话框的应用程序
2.依照例程界面添加编辑框IDC_PASSWORD,IDC_DATA,IDC_ENCRYPTIONIDC_DECRYPTION依次对应加密密码,待加密数据,加密后字符,解密后字符。再添加按钮<执行加密><执行解密>关联点击函数
void CGkbc8Dlg::OnEncrypt()
{
int nPassword;
CString sData,sEncrypted;
nPassword = GetDlgItemInt(IDC_PASSWORD);//获得加密密钥
GetDlgItemText(IDC_DATA,sData); //获得待加密数据
sEncrypted = Encrypt(sData,nPassword);//计算得出加密字符
SetDlgItemText(IDC_ENCRYPTION,sEncrypted);//显示已加密的字符
}
void CGkbc8Dlg::OnDecrypt()
{
int nPassword;
nPassword = GetDlgItemInt(IDC_PASSWORD);//获得加密密钥
CString sData,sEncrypted;
GetDlgItemText(IDC_ENCRYPTION,sEncrypted); //获得已加密数据
sData = Decrypt(sEncrypted,nPassword);//计算得出被加密的数据
SetDlgItemText(IDC_DECRYPTION,sData);//显示数据
}
函数中调用了两自定义函数Encrypt() Decrypt()所以再添加这两函数
CString CGkbc8Dlg:ecrypt(CString S, WORD K)
{
CString Result,Str;
int i,j;
for(i=0;i<S.GetLength()/2;i++)
{
j=((BYTE)S.GetAt(2*i)-65)*26;
j+=(BYTE)S.GetAt(2*i+1)-65;
Str = "0";
Str.SetAt(0,j);
Result += Str;
}
S = Result;
for(i=0;i<S.GetLength();i++)
Result.SetAt(i,(BYTE)S.GetAt(i)-K);
return Result;
}
CString CGkbc8Dlg::Encrypt(CString S, WORD K)
{
CString Str,Str1,Result;
int i,j;
Str = S;
for(i=0;i<S.GetLength();i++)
Str.SetAt(i,S.GetAt(i)+K);
S = Str;
for(i=0;i<S.GetLength();i++)
{
j = (BYTE)S.GetAt(i);
Str1 = "01";
Str1.SetAt(0,65+j/26);
Str1.SetAt(1,65+j%26);
Result += Str1;
}
return Result;
}
我们来演示下功能实现的整个过程
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|