📄 aes1dlg.cpp
字号:
// AES1Dlg.cpp : implementation file
//
#include "stdafx.h"
#include "PKI.h"
#include "PKIDlg.h"
#include "AES1Dlg.h"
#include "KAES.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAES1Dlg dialog
CAES1Dlg::CAES1Dlg(CWnd* pParent /*=NULL*/)
: CDialog(CAES1Dlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CAES1Dlg)
m_filename = _T("");
m_filekey = _T("");
m_filename1 = _T("");
m_filename2 = _T("");
m_plain = _T("");
m_key = _T("");
m_enctext = _T("");
m_backtext = _T("");
//}}AFX_DATA_INIT
}
void CAES1Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAES1Dlg)
DDX_Text(pDX, IDC_EDIT1, m_filename);
DDX_Text(pDX, IDC_EDIT2, m_filekey);
DDX_Text(pDX, IDC_EDIT3, m_filename1);
DDX_Text(pDX, IDC_EDIT4, m_filename2);
DDX_Text(pDX, IDC_EDIT5, m_plain);
DDX_Text(pDX, IDC_EDIT6, m_key);
DDX_Text(pDX, IDC_EDIT7, m_enctext);
DDX_Text(pDX, IDC_EDIT8, m_backtext);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAES1Dlg, CDialog)
//{{AFX_MSG_MAP(CAES1Dlg)
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_BN_CLICKED(IDC_BUTTON2, OnENCFILE)
ON_BN_CLICKED(IDC_BUTTON3, OnDECFILE)
ON_BN_CLICKED(IDC_BUTTON4, Onclear)
ON_BN_CLICKED(IDC_BUTTON7, Onenc)
ON_BN_CLICKED(IDC_BUTTON8, Ondec)
ON_BN_CLICKED(IDC_BUTTON9, OnClear)
ON_BN_CLICKED(IDC_BUTTON5, OnButton5)
ON_BN_CLICKED(IDC_BUTTON6, OnButton6)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CAES1Dlg message handlers
void CAES1Dlg::OnButton1()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
CString str;
CFileDialog dlg(1,NULL,NULL,OFN_HIDEREADONLY ,"All Files(*.*)|*.*||");
if(IDOK!=dlg.DoModal())return;
m_filename=dlg.GetPathName();
UpdateData(FALSE);
}
void CAES1Dlg::OnENCFILE()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
if(m_filename=="")return;
FILE* ff;
FILE* fp;
ff=fopen((LPCTSTR)m_filename,"rb");
if(!ff)return;
fseek(ff,0,SEEK_END);
long lFileLen=ftell(ff);
fseek(ff,0,SEEK_SET);
long c=lFileLen/16;
long d=lFileLen%16;
m_filename+=".aen";
m_filename1=m_filename;
fp=fopen((LPCTSTR)m_filename,"ab");
if(!fp){fclose(ff);return;}
unsigned char inBuff[25],ouBuff[25],skey[32];
memcpy(skey,(LPCTSTR)m_filekey,24);
KAES kaes(24,(unsigned char*)skey);
for(long i=0;i<c;i++)
{
fread(inBuff,1,16,ff);
kaes.Cipher(inBuff,ouBuff);
fwrite(ouBuff,1,16,fp);
}
if(d)
{
memset(inBuff,0,16);
c=fread(inBuff,1,d,ff);
kaes.Cipher(inBuff,ouBuff);
fwrite(ouBuff,1,16,fp);
}
fclose(ff);
fclose(fp);
MessageBox("加密成功!");
UpdateData(FALSE);
}
void CAES1Dlg::OnDECFILE()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
if(m_filename1=="")return;
FILE* ff;
FILE* fp;
ff=fopen((LPCTSTR)m_filename1,"rb");
if(!ff)return;
fseek(ff,0,SEEK_END);
long lFileLen=ftell(ff);
fseek(ff,0,SEEK_SET);
long c=lFileLen/16;
long d=lFileLen%16;
m_filename2=m_filename1+".ade";
fp=fopen((LPCTSTR)m_filename2,"w+");
if(!fp){fclose(ff);return;}
unsigned char inBuff[25],ouBuff[25],skey[32];
memcpy(skey,(LPCTSTR)m_filekey,24);
KAES kaes(24,(unsigned char*)skey);
for(long i=0;i<c;i++)
{
fread(inBuff,1,16,ff);
kaes.InvCipher(inBuff,ouBuff);
fwrite(ouBuff,1,16,fp);
}
if(d)
{
MessageBox("文件可能已经损坏或未经AES加密过!");
}
fclose(ff);
fclose(fp);
MessageBox("解密成功!");
UpdateData(FALSE);
}
void CAES1Dlg::Onclear()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
m_filename="";
m_filekey="";
m_filename1="";
m_filename2="";
UpdateData(FALSE);
}
void CAES1Dlg::Onenc()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
unsigned char skey[32];
unsigned char inbuff[32],oubuff[32];
memcpy(skey,(LPCTSTR)m_key,24);
KAES kaes(24,(unsigned char*)skey);
int c=sizeof(inbuff);
if(m_plain.GetLength()>16)
{
MessageBox("加密数据不超过16位,超过的部分截断!");
}
memcpy(inbuff,(LPCTSTR)m_plain,c);
CString str;
kaes.Cipher(inbuff,oubuff);
for(int i=0;i<c;i++)
str +=oubuff[i];
m_enctext=str;
UpdateData(FALSE);
}
void CAES1Dlg::Ondec()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
unsigned char skey[32];
unsigned char inbuff[32],oubuff[32];
memcpy(skey,(LPCTSTR)m_key,24);
KAES kaes(24,(unsigned char*)skey);
int c=sizeof(inbuff);
memcpy(inbuff,(LPCTSTR)m_enctext,c);
CString str;
kaes.InvCipher(inbuff,oubuff);
for(int i=0;i<16;i++)
str +=oubuff[i];
m_backtext=str;
UpdateData(FALSE);
}
void CAES1Dlg::OnClear()
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
m_plain="";
m_key="";
m_enctext="";
m_backtext="";
UpdateData(FALSE);
}
void CAES1Dlg::OnButton5()
{
// TODO: Add your control notification handler code here
CPKIDlg dlg;
dlg.DoModal();
CDialog::OnCancel();
}
void CAES1Dlg::OnButton6()
{
// TODO: Add your control notification handler code here
CDialog::OnCancel();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -