联系方式: 微信:biyebang QQ: 629001810
UltraEdit是很多人爱用的文本编辑软件,它除了单纯的文本编辑外,对于一些特殊的文件,例如Java、ASP等等,都会辨别出它们的关键字或是字符串、数字等,然后用不同的颜色表示它们,让你更容易看出程序中有些什么,或是有没有什么关键字输入错了。除此之外它也可以简单地帮你做错字的更正。不过它最强的地方在于能设定一些宏(Macro),让你可以自行设计额外的特殊功能。
UltraEdit有一项执行外部指令的功能,还可以把执行结果显示出来。好处是可以把DOS模式的结果显示在一个新的文件里,这样一来再多的信息也不怕遗漏了。使用方法很简单,就到菜单栏上选择“高级”→“DOS命令”,快捷键是“F9”。在“命令”处输入在DOS模式下要输入的编译指令,在“工作目录”处选择程序所在目录。在编写程序的过程中,这个功能就显得十分方便,不用总是要到命令提示符模式下去试运行程序。
系统实现
64位的明文输入P分为两部份分别为32位L0和R0,在第一轮回和之后的每两个轮回,左边和右边的两部分Li-1和Ri-1分别与KLi通过FL函数产生32位的输出。在每次轮回中的左边部份调用接受32位输入和48位密钥KIi以及64位的密钥KOi的FO函数,产生32位的输出。这种输出是右边部分新的一部分。在每一次轮回中,左边部分和右边部分相互交换给Li和Ri。经过8次轮回最后一次调用KL函数得到左部和右部,然后再作最后的重组左边和右边即Ln+1和Rn+1产生64位输出C64,其中n是轮回的次数(一般为8)。
其中加密输入为:
P=L0‖R0
KL={KLi}
KO={KOi}
KI={KIi}
加密函数则是:
fori=1,3,...,n-1;
Ri=FL(Li-1,KLi)
Li=FL(Ri-1,KLi+1)^FO(Ri,KOi,KIi)
Li+1=Ri^FO(Li,KOi+2,KIi+1)
Ri+1=Li
fori=n+1;
Ri=FL(Li-1.KLi)
Li=FL(Ri-1.KLi+1)
最后输出:C=Ln+1‖Rn+1
下面是加密部分代码:
public void Encrypt(char ptext[],char userkey[],char ctext[])
{
long L0,L1,L2,L3,L4,L5,L6,L7,L8,L9;
long R0,R1,R2,R3,R4,R5,R6,R7,R8,R9;
KeySchedule(userkey);
//轮回,加密
L0=(((long)ptext[0])<<24)+(((long)ptext[1])<<16)+(((long)ptext[2])<<8)+((long)ptext[3]);
R0=(((long)ptext[4])<<24)+(((long)ptext[5])<<16)+(((long)ptext[6])<<8)+((long)ptext[7]);
R1=FL(L0,KL[0]);
L1=FO(R1,0,0)^FL(R0,KL[1]);
R2=L1;
L2=FO(R2,4,3)^R1;
R3=FL(L2,KL[2]);
L3=FO(R3,8,6)^FL(R2,KL[3]);
R4=L3;
L4=FO(R4,12,9)^R3;
R5=FL(L4,KL[4]);
L5=FO(R5,16,12)^FL(R4,KL[5]);
R6=L5;
L6=FO(R6,20,15)^R5;
R7=FL(L6,KL[6]);
L7=FO(R7,24,18)^FL(R6,KL[7]);
R8=L7;
L8=FO(R8,28,21)^R7;
R9=FL(L8,KL[8]);
L9=FL(R8,KL[9]); //最后一轮
ctext[0]=(char)((L9>>24)&0XFF);
ctext[1]=(char)((L9>>16)&0XFF);
ctext[2]=(char)((L9>>8)&0XFF);
ctext[3]=(char)(L9&0XFF);
ctext[4]=(char)((R9>>24)&0XFF);
ctext[5]=(char)((R9>>16)&0XFF);
ctext[6]=(char)((R9>>8)&0XFF);
ctext[7]=(char)(R9&0XFF);
}
源文件
版权所有© 帮我毕业网 并保留所有权利