77范文网 - 专业文章范例文档资料分享平台

DES加密算法课程设计报告(6)

来源:网络收集 时间:2019-01-05 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

2、解密过程(JieMi.cpp)

// JieMi.cpp : implementation file

#include \#include \#include \

#ifdef _DEBUG

#define new DEBUG_NEW #undef THIS_FILE

static char THIS_FILE[] = __FILE__; #endif

#include \

// JieMi dialog

JieMi::JieMi(CWnd* pParent /*=NULL*/) : CDialog(JieMi::IDD, pParent) {

//{{AFX_DATA_INIT(JieMi) m_Mingwen = _T(\ m_Miwen = _T(\ m_Miyao = _T(\

m_outputMingwen = _T(\ //}}AFX_DATA_INIT }

void JieMi::DoDataExchange(CDataExchange* pDX) {

CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(JieMi)

DDX_Control(pDX, IDC_LIST1, m_output); DDX_Text(pDX, IDC_Mingwen, m_Mingwen); DDX_Text(pDX, IDC_Miwen, m_Miwen); DDX_Text(pDX, IDC_Miyao, m_Miyao);

DDX_Text(pDX, IDC_outMingwen, m_outputMingwen); //}}AFX_DATA_MAP }

BEGIN_MESSAGE_MAP(JieMi, CDialog) //{{AFX_MSG_MAP(JieMi)

ON_BN_CLICKED(IDC_back, Onback) ON_BN_CLICKED(IDC_JieMi, OnJieMi) //}}AFX_MSG_MAP END_MESSAGE_MAP()

// JieMi message handlers

26

BOOL JieMi::OnInitDialog() {

CDialog::OnInitDialog();

m_output.ModifyStyle(0,LVS_REPORT); DWORD style= m_output.GetExStyle(); style=style^LVS_EX_CHECKBOXES;

m_output.SetExtendedStyle(style|LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);

m_output.InsertColumn(0,\循环轮数\ m_output.InsertColumn(1,\子密钥\ m_output.InsertColumn(2,\左部(Li)\ m_output.InsertColumn(3,\右部(Ri)\ // TODO: Add extra initialization here

return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }

void JieMi::Onback() {

// TODO: Add your control notification handler code here ShowWindow(SW_HIDE); CDESDlg dlg; dlg.DoModal(); }

void JieMi::OnJieMi() {

// TODO: Add your control notification handler code here FILE *fp1,*fp2; int i,j,k; int str[8];

char miwen[8],miyao[8]; //存储从文件中读取的明文和密钥 int miwenB[64],miyaoB[64]; //存储64位二进制的明文和密钥 fp1=fopen(\ fp2=fopen(\ if(fp1==NULL||fp2==NULL) {

MessageBox(\明文和密钥文件打开失败!\ return; }

for(i=0;i<8;i++) {

fscanf(fp1,\ fscanf(fp2,\

27

}

fclose(fp1); fclose(fp2); FILE *fp4,*fp5; char ch;

fp4=fopen(\密文二进制.txt\fp5=fopen(\密钥二进制.txt\k=0;

for(i=0;i<8;i++) {

ch=miwen[i]; for(j=0;j<8;j++) {

str[j]=ch%2; ch=ch/2; }

for(j=7;j>=0;j--) {

miwenB[k]=str[j]; k++;

fprintf(fp4,\ } }

fclose(fp4); k=0;

for(i=0;i<8;i++) {

ch=miyao[i]; for(j=0;j<8;j++) {

str[j]=ch%2; ch=ch/2; }

for(j=7;j>=0;j--) {

miyaoB[k]=str[j]; k++;

fprintf(fp5,\ } }

fclose(fp5);

char Miwentemp[75]=\CString temp1; char *cha;

28

for(i=0;i<64;i++) {

temp1.Format(\

cha=temp1.GetBuffer(temp1.GetLength()); strcat(Miwentemp,cha); if((i+1)%8==0)

strcat(Miwentemp,\ }

m_Miwen=Miwentemp; //二进制密文显示在界面上 for(i=0;i<64;i++) {

temp1.Format(\

cha=temp1.GetBuffer(temp1.GetLength()); strcat(Miyaotemp,cha); if((i+1)%8==0)

strcat(Miyaotemp,\ }

m_Miyao=Miyaotemp; //二进制密钥显示在界面上 /*密钥的生成*/

int pc_1table[56]={ //pc_1置换表 57,49,41,33,25,17,9, 1,58,50,42,34,26,18, 10,2,59,51,43,35,27, 19,11,3,60,52,44,36, 63,55,47,39,31,23,15, 7,62,54,46,38,30,22, 14,6,61,53,45,37,29, 21,13,5,28,20,12,4};

int pc_2table[48]={ //pc_2置换表 14,17,11,24,1,5, 3,28,15,6,21,10, 23,19,12,4,26,8, 16,7,27,20,13,2, 41,52,31,37,47,55, 30,40,51,45,33,48, 44,49,39,56,34,53, 46,42,50,36,29,32}; int afterpc_1[56]; /*经过pc_1置换*/ for(i=0;i<56;i++)

afterpc_1[i]=miyaoB[pc_1table[i]-1]; /*密钥第0次分组*/ int C0[28],D0[28]; for(i=0;i<28;i++)

29

C0[i]=afterpc_1[i]; for(j=0,i=28;i<56;i++,j++) D0[j]=afterpc_1[i];

/*十六轮子密钥产生前的中间数据,左移产生的C[16][28],D[16][28]*/ int C[16][28],D[16][28]; for(i=0;i<27;i++) //第一轮数据生成C[0][28]与D[0][28] {

C[0][i]=C0[i+1]; D[0][i]=D0[i+1]; }

C[0][27]=C0[0]; D[0][27]=D0[0]; for(i=1;i<16;i++) //第二轮数据至第十六轮数据生成 {

if(i==1||i==8||i==15) {

for(j=0;j<27;j++) //左移1位 {

C[i][j]=C[i-1][j+1]; D[i][j]=D[i-1][j+1]; }

C[i][27]=C[i-1][0]; D[i][27]=D[i-1][0]; }

else //左移2位 {

for(j=0;j<26;j++) {

C[i][j]=C[i-1][j+2]; D[i][j]=D[i-1][j+2]; }

C[i][26]=C[i-1][0]; C[i][27]=C[i-1][1]; D[i][26]=D[i-1][0]; D[i][27]=D[i-1][1]; } }

/*十六轮子密钥初始数据合并,为pc_2置换生成子密钥做准备*/ int beforekey[16][56]; k=0;

for(i=0;i<16;i++) {

for(j=0;j<28;j++)

30

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库DES加密算法课程设计报告(6)在线全文阅读。

DES加密算法课程设计报告(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/405766.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: