免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
Board logo

标题: [推理大揭秘] 波雷费密码 [打印本页]

作者: 柯南    时间: 2017-2-20 17:44     标题: 波雷费密码

1选取一个英文字作密匙。除去重复出现的字母。将密匙的字母逐个逐个加入5×5的矩阵内,剩下的空间将未加入的英文字母依a-z的顺序加入。(将Q去除,或将I和J视作同一字。)

  2将要加密的讯息分成两个一组。若组内的字母相同,将X(或Q)加到该组的第一个字母后,重新分组。若剩下一个字,也加入X字。

  3在每组中,找出两个字母在矩阵中的地方。

  若两个字母不同行也不同列,在矩阵中找出另外两个字母,使这四个字母成为一个长方形的四个角。

  若两个字母同行,取这两个字母右方的字母(若字母在最右方则取最左方的字母)。

  若两个字母同列,取这两个字母下方的字母(若字母在最下方则取最上方的字母)。

  新找到的两个字母就是原本的两个字母加密的结果。

  RC5

  1.创建密钥组,RC5算法加密时使用了2r+2个密钥相关的的32位字: ,这里r表示加密的轮数。创建这个密钥组的过程是非常复杂的但也是直接的,首先将密钥字节拷贝到32位字的数组L中(此时要注意处理器是little-endian顺序还是big-endian顺序),如果需要,最后一个字可以用零填充。然后利用线性同余发生器模2初始化数组S:

  对于i=1到2(r+1)-1: (本应模 ,本文中令w=32)

  其中对于16位字32位分组的RC5,P=0xb7e1 Q=0x9e37

  对于32位字和64位分组的RC5,P=0xb7e15163 Q=0x9e3779b9

  对于64位字和128位分组,P=0xb7151628aed2a6b Q=0x9e3779b97f4a7c15

  最后将L与S混合,混合过程如下:

  i=j=0

  A=B=0

  处理3n次(这里n是2(r+1)和c中的最大值,其中c表示输入的密钥字的个数)

  2.加密处理,在创建完密钥组后开始进行对明文的加密,加密时,首先将明文分组划分为两个32位字:A和B(在假设处理器字节顺序是little-endian、w=32的情况下,第一个明文字节进入A的最低字节,第四个明文字节进入A的最高字节,第五个明文字节进入B的最低字节,以此类推),其中操作符<<<表示循环左移,加运算是模 (本应模 ,本文中令w=32)的。

  输出的密文是在寄存器A和B中的内容

  3.解密处理,解密也是很容易的,把密文分组划分为两个字:A和B(存储方式和加密一样),这里符合>>>是循环右移,减运算也是模 (本应模 ,本文中令w=32)的。




欢迎光临 E漫—异想天开、天马行空的思维 (http://huankong.funbbs.me/) Powered by Discuz! 7.2