354上位实现AES加密与解密
354上位实现AES加密与解密功能展示
AES是一种高级加密标准(英语:Advanced Encryption Standard,缩写:AES),可用于电子数据加密保护,已成为对称密钥加密中最流行的算法之一,我们当前例程就利用AES对指定文件进行加密保护功能,效果如图,点击<选择要加密文件>后,会设置好要加密的文件,加密后存储位置,解密后存储位置,点击<执行加密>会在设置的目录生成加密后的文件,点击<执行AES解密>会在设置的目录生成解密后的文件;
要点提示
AES是一迭代的对称的密钥分组的密码,AES的基本要求是,采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位,算法应易于各种硬件和软件实现。
AES算法是基于置换和代替,置换是数据的重新排列,代替是用一单元数据替代另一个,AES使用了多种方法来实现置换和代替;
例程通过自定义类CAES实现AES加密解密功能,通过调用类的成员函数SetKeys()设置关键字后,就可调用类的EncryptFile(), DecryptFile()实现加密与解密功能;
void EncryptFile(CString SourceFile,CString TagerFile);
SourceFile为要加密的原文件目录,TagerFile为加密后的文件存储目录;
void DecryptFile(CString SourceFile,CString TagerFile);
SourceFile为要解密的原文件目录,TagerFile为解密后的文件存储目录;
实现功能
1.新建基于对话框的应用程序
2.将工程根目录CAES类的两文件AES.cpp, AES.h复制到自己工程根目录,并加载两文件到工程中;
3.依照例程界面,添加编辑框IDC_EDIT1, IDC_EDIT2, IDC_EDIT3分别对应 要加密文件,加密后存储位置,解密后存储位置,再添加三按钮《选择要加密文件》<执行AES加密><执行AES解密>关联按钮的点击函数
void CGkbc8Dlg::OnSelect()
{
CFileDialog Dlg(TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"",NULL);
if(Dlg.DoModal() == IDOK)
{
SetDlgItemText(IDC_EDIT1,Dlg.GetPathName()); //原文件
CString sFileName,sFilePath,sTemp,sPathName;
sFileName = Dlg.GetFileName();
sFilePath = Dlg.GetPathName();
sFilePath = sFilePath.Left(sFilePath.GetLength()-sFileName.GetLength());//目录
sTemp = sFileName;
sTemp.Insert(sTemp.Find('.'),"_Encrypt");
sPathName=sFilePath+sTemp;
SetDlgItemText(IDC_EDIT2,sPathName); //加密文件
sTemp = sFileName;
sTemp.Insert(sTemp.Find('.'),"_Descrypt");
sPathName=sFilePath+sTemp;
SetDlgItemText(IDC_EDIT3,sPathName); //解密文件
}
}
void CGkbc8Dlg::OnEncrypt()
{
CString sSourcePath,sEncryptPath;
GetDlgItemText(IDC_EDIT1,sSourcePath);
GetDlgItemText(IDC_EDIT2,sEncryptPath);
if(sSourcePath.IsEmpty()||sEncryptPath.IsEmpty())
return;
CAES aes;
aes.SetKeys(BIT128,"AES Encrypt Decrypt");
aes.EncryptFile(sSourcePath,sEncryptPath);
}
void CGkbc8Dlg::OnDecrypt()
{
CString sEncryptPath,sDecryptPath;
GetDlgItemText(IDC_EDIT2,sEncryptPath);
GetDlgItemText(IDC_EDIT3,sDecryptPath);
if(sDecryptPath.IsEmpty()||sEncryptPath.IsEmpty())
return;
CAES aes;
aes.SetKeys(BIT128,"AES Encrypt Decrypt");
aes.DecryptFile(sEncryptPath,sDecryptPath);
}
我们来演示下功能实现的整个过程机VC MFC实现AES加密
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|