vc++基于Misty1算法的加密软件设计+源码 第6页
((DWORD)ctext[3]);
R9=(((DWORD)ctext[4])<<24)+(((DWORD)ctext[5])<<16)+(((DWORD)ctext[6])<<8)+((DWORD)ctext[7]);
R8=FLINV (L9, KL [9]);
L8=FO (R8, KO+28, KI+21) ^FLINV (R9, KL [8]);
R7=L8;
L7=FO (R7, KO+24, KI+18) ^R8;
R6=FLINV (L7, KL [7]);
L6=FO (R6, KO+20, KI+15) ^FLINV (R7, KL [6]);
R5=L6;
L5=FO(R5,KO+16,KI+12)^R6;
R4=FLINV(L5,KL[5]);
L4=FO(R4,KO毕业论文
http://www.751com.cn+12,KI+9)^FLINV(R5,KL[4]);
R3=L4;
L3=FO(R3,KO+8,KI+6)^R4;
R2=FLINV(L3,KL[3]);
L2=FO(R2,KO+4,KI+3)^FLINV(R3,KL[2]);
R1=L2;
L1=FO(R1,KO,KI)^R2;
R0=FLINV(L1,KL[1]);
L0=FLINV(R1,KL[0]);//最后一轮
ptext[0本文来自辣文论文网原文请找QQ752018766 [1]=(BYTE)((L0>>16)&0XFF);ptext[2]=(BYTE)((L0>>8)&0XFF);ptext[3]=(BYTE)(L0&0XFF);
ptext[4]=(BYTE)((R0>>24)&0XFF);ptext[5]=(BYTE)((R0>>16)&0XFF);ptext[6]=(BYTE)((R0>>8)&0XFF);ptext[7]=(BYTE)(R0&0XFF);
}
2.2 MISTY1应用于文件加密的意义
加密技术是电子商务采取的主要安全保密措施,是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密)。加密技术包括两个元素:算法和密钥。算法是将普通的文本(或者可以理解的信息)与一窜数字(密钥)的结合,产生不可理解的密文的步骤,密钥是用来对数据进行编码和解码的一种算法。在安全保密中,可通过适当的密钥加密技术和管理机制来保证网络的信息通讯安全。密钥加密技术的密码体制分为对称密钥体制和非对称密钥体制两种。相应地,对数据加密的技术分为两类,即对称加密(私人密钥加密)和非对称加密(公开密钥加密)。对称加密加密密钥和解密密钥相同。加密信息的安全性取决于密钥的安全性,与算法的安全性无关,即由密文和加解密算法不可能得到明文。换句话说算法无需保密,需保密的仅是密钥。由于MISTY1算法取得了良好的良好的阻力线和鉴别攻击,而且还使能实行以相对较少的逻辑组件中执行函数的程度相对较低,所以在更大程度上保证了加密后的文件的安全性。
对于带有重要信息的小型文本和二进制数据的文护,①如果不加密,将无法放心的保存在计算机上,尤其是连网的或机房里的公共计算机。②如果借助功能强大的大型多用户数据保护程序文护几个小型文件,显得十分烦琐,好比杀鸡用牛刀。所以,对于使用小型文件进行数据交换的情况,更好的方案是通过一个小型应用程序对这些文件进行对称密钥加密。
使用MISTY1加密文件有两点重要意义:①应用对称密钥加密文件(文本文件或BMP文件),有利地加大了加密文件的不可破解性,加强了文件的安全性。②加密后的数据变换成文本,使得我们可以通过几乎任何方式安全传递任意文件,比如在只有http的环境使用xml方式。
3 加密软件的设计和实现
3.1 软件功能分析
软件要求如下:
1. 实现对加/解密正确性的演示;
2. 对文件(文本文件或BMP文件)进行加密,并能对加密文件进行解密;
分析图如下:
图8 流程图
所以说要进行编码的程序有:
1. MISTY1算法的c++语言实现,能实现正确的加密解密;
2. 图形界面的设计与编码。
3.2 MISTY1的c++实现
由于我们使用的是MFC编程方式,因此为了更好的体现面向对象的编程思想,我们将MISTY1算法用一个C++类来实现。其关键代码如下:
DWORD misty1::FL (DWORD X, DWORD KEY)
{
DWORD XL, XR, KL, KR, YL, YR;
XL=X>>16; XR=X&0x0000FFFF;
KL=KEY>>16; KR=KEY&0x0000FFFF;
YR= (XL&KL) ^XR; YL= (YR|KR) ^XL;
Return (YL<<16) |YR;
}
DWORD misty1::FLINV (DWORD Y, DWORD KEY)
{
DWORD XL, XR, KL, KR, YL, YR;
YL=Y>>16; YR=Y&0x0000FFFF;
KL=KEY>>16; KR=KEY&0x0000FFFF;
XL= (YR|KR) ^YL; XR= (XL&KL) ^YR;
Return (XL<<16) |XR;
}
DWORD misty1::FO (DWORD X, WORD KO [4], WORD KI [3])
{
WORD L1, L2, L3, R1, R2, R3;
R1=FI((KO[0]^((WORD)(X>>16)&0xFFFF)),KI[0])^((WORD)(X&0xFFFF));
L1=(WORD)(X&0xFFFF);
R2=FI ((L1^KO [1]), KI [1]) ^R1;
L2=R1;本文来自辣文论文网原文请找QQ752018766
R3=FI ((L2^KO [2]), KI [2]) ^R2;
L3=R2^KO [3];
Return (((DWORD) L3) <<16)| ((DWORD) R3);
}
WORD misty1::FI (WORD X, WORD KI)//right
{毕业论文
http://www.751com.cn WORD L1, L2, L3, R1, R2, R3;
R1=S9 [((X>>7) &0x1FF)] ^(X&0x007F);
L1=X&0x7F;
R2=S7 [L1] ^ (R1&0x7F) ^ ((KI>>9) &0x7F);
L2=R1^ (KI&0x1FF);
R3=S9 [L2] ^R2;
L3=R2;
Return (L3<<9) |R3;
}
Void misty1::KeySchedule (BYTE *userkey)
{
WORD tempkey1 [16], tempkey2 [16];
int i;
for (i=0;i<8;i++) tempkey1[i]=(((WORD)userkey[i*2])<<8)+((WORD)userkey[i*2+1]);
for (i=0;i<8;i++) tempkey2[i]=FI(tempkey1[i],tempkey1[(i+1)%8]);
for (i=0;i<8;i++)
上一页 [1] [2] [3] [4] [5] [6]
vc++基于Misty1算法的加密软件设计+源码 第6页下载如图片无法显示或论文不完整,请联系qq752018766