¥¥¥¥¥¥¥¥高分求写一个加密解密算法。¥¥¥¥¥¥¥¥¥ ( 积分: 200 )

  • 主题发起人 yjtjhyygy
  • 开始时间
Y

yjtjhyygy

Unregistered / Unconfirmed
GUEST, unregistred user!
在密钥生成中主要过程如下:
首先根据分组的长度获得一张规律的初始排列表,如,假定取分组长度n=3,则产生的排列码表(表1)如下:(初始排列表程序已经完成)
密钥3!= 6 初始排列
1 (1,2,3)
2 (1,3,2)
3 (2,1,3)
4 (2,3,1)
5 (3,1,2)
6 (3,2,1)
表 1
根据用户输入的初始密钥中的某几位生成伪随机序列来对初始排列表进行随机排列,假定排列顺序(表2)如下:
伪随机算法暂时还没实现



密钥3!= 6 初始排列
1 (1,2,3)
2 (3,1,2)
3 (2,3,1)
4 (1,3,2)
5 (2,1,3)
6 (3,2,1)
表 2
并再根据初始密钥中的某些为来确定取非方案,假定取非方案为直通信号取非(即当数k在序列中的位置为k时取非,如序列(1,3,2)当进行直通信号取非是得到的新序列为(-1,3,2))再次得到新表(表3)如下:
密钥3!= 6 初始排列
1 (-1,-2,-3)
2 (3,1,2)
3 (2,3,1)
4 (-1,3,2)
5 (2,1,-3)
6 (3,-2,1)
表 3
现在我们用具体实例来说明如何用排列码实现加密解密,即用(表3)来实现对字符串“the”的一次加密解密过程。
设n=3,key1=4,key2=5,先看一下密钥序列生成的过程,换密钥的方法为在当前密钥上加一个常数取n!的模形成新密钥的方法,第一个密钥为4,第二个密钥为(4+5)mod 6=3,第三个密钥为(3+5)mod 6=2,第四个密钥为(2+5)mod 6=1……,因此产生密钥序列为4,3,2,1,6,5,4,3,2,1,6,5……((1+5) mod 6=0规定密钥为0对应的排列码和密钥为n!对应的排列码相同,为方便取密钥范围为1-n!),因此此时的排列码序列为(-1,3,2), (2,3,1), (3,1,2), (-1,-2,-3), (2,1,-3), (3,-2,1),(-1,3,2), (2,3,1), (3,1,2), (-1,-2,-3), (2,1,-3), (3,-2,1)……
“the”对应的ASCII码的十六进制分别为74h,68h,65h,表示为二进制为01110100B,01101000B,01100101B,按每3比特分组(011),(101),(000),(110),(100),(001),(100),(101)的8组数据,第一组数据(011)按照(-1,3,2)的形式变化,明文的第一比特0取非后为1放在密文的第一比特上,明文的第二比特1不变得方式即1放在密文的第三比特,明文的第三比特1不变得方式放在密文的第二比特上,这样明文的第一组数据(011)将变成密文的第一组数据(111),以此类推可将明文的8组数据变成密文的8组数据如下:
(111),(110),(000),(001),(011),(000),(000),(110)转换成ASCII码为0f8h,16h,06h,对应为3个非可显示的字符。
解密过程则是加密过程的逆推
要求是做成标准DLL,留出明文输入/输出接口,分组长度N的输入接口,密钥的输入接口,还有密文的输出/输入接口,
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
908
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
853
DelphiTeacher的专栏
D
顶部