📄 desdlg.cpp
字号:
if (filelen==0)
{
MessageBox("明文为空");
fclose(handle);
return;
}
handle2 = fopen(RFILENAME, "wb");
//
for (long j=0;j<filelen;j+=TEXT_MAX)
{
memset(stext, 0, TEXT_MAX+1);
memset(rtext,0,TEXT_MAX+1);
scount = fread(stext, 1, TEXT_MAX, handle);
//加密工作:
des.DES_Act(rtext,stext,scount,key,keylen,ENCRYPT);
result = fwrite(rtext, 1, (scount % 8 != 0) ? (scount+8-scount%8) : scount, handle2);
}
fclose(handle);
fclose(handle2);
//
rflag = 1;
//显示结果
ShowCihper(ceil(scount/8.0)*8);
// ShowSText();
}
}
void CDESDlg::OnOutCipher()
{
// TODO: Add your control notification handler code here
static char BASED_CODE szFilter[] = "DES加密文件(*.des)|*.des|All Files (*.*)|*.*||";
int result;
//
if (m_cipher.GetWindowTextLength()==0)
{
MessageBox("密文为空");
return;
}
if (m_nRadio==1)
{
if (rflag==0)
{
MessageBox("请先选择密文文件");
return;
}
//
CFileDialog dlg(false, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, NULL);
if (dlg.DoModal()==IDOK)
{
memset(routfile,0,1024);
//********************************************************
//或缺文件类型
//********************************************************
DWORD filter_num = dlg.m_ofn.nFilterIndex;//返回的是当前选择的文件类型是第几个
filter_num -= 1;//适应数组
char a[][9] = {".des",""};//文件类型数组
CString file_ext = a[filter_num];//获得文件类型的名称
int ext_length = file_ext.GetLength();//获得长度
strcpy(routfile, dlg.GetPathName());
int t=strlen(routfile);
memcpy(routfile+t,file_ext.GetBuffer(0),ext_length);
//********************************************************
result = copyfile(RFILENAME, routfile);
//
MessageBox("密文输出完成");
}
}
else
{
CFileDialog dlg(false, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, NULL);
if (dlg.DoModal()==IDOK)
{
memset(soutfile,0,1024);
memset(stext,0,TEXT_MAX+1);
//********************************************************
//获取文件类型
//********************************************************
DWORD filter_num = dlg.m_ofn.nFilterIndex;//返回的是当前选择的文件类型是第几个
filter_num -= 1;//适应数组
char a[][9] = {".des",""};//文件类型数组
CString file_ext = a[filter_num];//获得文件类型的名称
int ext_length = file_ext.GetLength();//获得长度
strcpy(routfile, dlg.GetPathName());
int t=strlen(routfile);
if (dlg.GetPathName().Right(ext_length)!=file_ext)
memcpy(routfile+t,file_ext.GetBuffer(0),ext_length);
FILE* handle;
handle = fopen(routfile,"wb");
if (handle == NULL)
return;
m_cipher.GetWindowText(rtext,TEXT_MAX+1);
long len = m_cipher.GetWindowTextLength();
fwrite(rtext,1,len,handle);
fclose(handle);
// result = copyfile(SFILENAME, soutfile);
//
MessageBox("密文输出完成");
}
}
}
void CDESDlg::OnOutPlaint()
{
// TODO: Add your control notification handler code here
static char BASED_CODE szFilter[] = "文本文件(*.txt)|*.txt|JPG图片(*.jpg)|*.jpg|BMP图片(*.bmp)|*.bmp|GIF图片(*.gif)|*.gif|WORD(*.doc)|*.doc|All Files (*.*)|*.*||";
int result;
//
if (m_nRadio==1)
{
if (sflag==0)
{
MessageBox("请先选择明文文件");
return;
}
//
CFileDialog dlg(false, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, NULL);
if (dlg.DoModal()==IDOK)
{
memset(soutfile,0,1024);
//********************************************************
//或缺文件类型
//********************************************************
DWORD filter_num = dlg.m_ofn.nFilterIndex;//返回的是当前选择的文件类型是第几个
filter_num -= 1;//适应数组
char a[][9] = {".txt",".jpg","bmp","gif","doc",""};//文件类型数组
CString file_ext = a[filter_num];//获得文件类型的名称
int ext_length = file_ext.GetLength();//获得长度
strcpy(soutfile, dlg.GetPathName());
int t=strlen(soutfile);
memcpy(soutfile+t,file_ext.GetBuffer(0),ext_length);
result = copyfile(SFILENAME, soutfile);
//
MessageBox("明文输出完成");
}
}
else
{
if (m_plain.GetWindowTextLength()==0)
{
MessageBox("明文为空");
return;
}
CFileDialog dlg(false, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, szFilter, NULL);
if (dlg.DoModal()==IDOK)
{
memset(soutfile,0,1024);
memset(stext,0,TEXT_MAX+1);
//********************************************************
//获取文件类型
//********************************************************
DWORD filter_num = dlg.m_ofn.nFilterIndex;//返回的是当前选择的文件类型是第几个
filter_num -= 1;//适应数组
char a[][9] = {".txt",".jpg","bmp","gif","doc",""};//文件类型数组
CString file_ext = a[filter_num];//获得文件类型的名称
int ext_length = file_ext.GetLength();//获得长度
strcpy(soutfile, dlg.GetPathName());
int t=strlen(soutfile);
if (dlg.GetPathName().Right(ext_length)!=file_ext)
memcpy(soutfile+t,file_ext.GetBuffer(0),ext_length);
FILE* handle;
handle = fopen(soutfile,"wb");
if (handle == NULL)
return;
m_plain.GetWindowText(stext,TEXT_MAX+1);
long len = m_plain.GetWindowTextLength();
fwrite(stext,1,len,handle);
fclose(handle);
// result = copyfile(SFILENAME, soutfile);
//
MessageBox("明文输出完成");
}
}
}
void CDESDlg::OnRadio1()
{
// TODO: Add your control notification handler code here
if (m_nRadio==0) return;
else
{
m_nRadio=0;
ClearAll();
m_sb.EnableWindow(false);
m_rb.EnableWindow(false);
sflag = 0;
rflag = 0;
DeleteFile(SFILENAME);
DeleteFile(RFILENAME);
}
}
void CDESDlg::OnRadio2()
{
// TODO: Add your control notification handler code here
if (m_nRadio==1) return;
else
{
m_nRadio=1;
ClearAll();
m_sb.EnableWindow(true);
m_rb.EnableWindow(true);
sflag = 0;
rflag = 0;
}
}
//显示明文
//用文本方式,将ASC的0转换为空格来显示
void CDESDlg::ShowSText()
{
// TODO: Add your control notification handler code here
int i;
FILE* handle;
int result;
//
memset(stext, 0, TEXT_MAX+1);
handle = fopen(SFILENAME, "rb");
if (handle==NULL)
{
MessageBox("非法明文文件");
return;
}
scount = fread(stext, 1, TEXT_MAX, handle);
result = fclose(handle);
//处理
for (i=0; i<scount; i++)
{
if (stext[i]==0)
stext2[i] = ' ';
else
stext2[i] = stext[i];
}
stext2[scount] = 0;
//
m_plain.SetWindowText(stext2);
m_plain.UpdateWindow();
}
//显示密文
void CDESDlg::ShowRText()
{
// TODO: Add your control notification handler code here
// int i;
FILE* handle;
int result;
//
memset(rtext, 0, TEXT_MAX+1);
handle = fopen(RFILENAME, "rb");
if (handle==NULL)
{
MessageBox("非法明文文件");
return;
}
scount = fread(rtext, 1, TEXT_MAX, handle);
result = fclose(handle);
ShowCihper(scount);
// for (i=0; i<scount; i++)
// {
// if (rtext[i]==0)
// rtext2[i] = ' ';
// else
// rtext2[i] = rtext[i];
// }
// rtext2[scount] = 0;
//
// m_cipher.SetWindowText(rtext2);
// m_cipher.UpdateWindow();
}
void CDESDlg::ShowCihper(long len)
{
// TODO: Add your control notification handler code here
int i;
int p;
unsigned char c1,c2,c3;
//处理
p = 0;
for (i=0; i<len; i++)
{
c3 = rtext[i];
c1 = c3 >> 4;
c2 = c3 & 15;
if (c1 <=9 && c1 >= 0) c1=c1+'0';
if (c1 <=15 && c1 >= 10) c1=c1-10+'A';
if (c2 <=9 && c2 >= 0) c2=c2+'0';
if (c2 <=15 && c2 >= 10) c2=c2-10+'A';
rtext2[p]=c1;
rtext2[p+1]=c2;
p+=2;
}
rtext2[p] = 0;
//
m_cipher.SetWindowText(rtext2);
// m_cipher.UpdateWindow();
}
void CDESDlg::HalfByteToByte(long len)
{
// TODO: Add your control notification handler code here
int i;
//处理
for (i=0; i<len; i++)
{
if (rtext2[i]>='0' && rtext2[i] <= '9') rtext2[i] = rtext2[i]-'0';
if (rtext2[i]>='A' && rtext2[i] <= 'F') rtext2[i] = rtext2[i]-'A'+10;
}
for (i=0;i<len;i+=2)
{
rtext[i/2] = rtext2[i]*16+rtext2[i+1];
}
rtext[i] = 0;
}
void CDESDlg::OnButton1()
{
// TODO: Add your control notification handler code here
CAbout dlg;
dlg.DoModal();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -