用vb实现DES加解密算法(三)--解密[13]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 agamem 的 blog

        r11(i) = l10(i) xor codep(i)
        l11(i) = r10(i)
    next
   
   
    '进行第12次迭代
    for i = 0 to 47
        codee(i) = r11(e(i))                 '经过e变换扩充,由32位变为48位
        codee(i) = codee(i) xor k5(i)        '与k5按位作不进位加法运算
    next
   
    '分8组
    for i = 0 to 5
        codes1(i) = codee(i)
        codes2(i) = codee(i + 6)
        codes3(i) = codee(i + 12)
        codes4(i) = codee(i + 18)
        codes5(i) = codee(i + 24)
        codes6(i) = codee(i + 30)
        codes7(i) = codee(i + 36)
        codes8(i) = codee(i + 42)
    next
   
    's盒运算,得到8个数
   
        s(0) = s1(codes1(5) + codes1(0) * 2, codes1(4) + codes1(3) * 2 + codes1(2) * 4 + codes1(1) * 8)
        s(1) = s2(codes2(5) + codes2(0) * 2, codes2(4) + codes2(3) * 2 + codes2(2) * 4 + codes2(1) * 8)
        s(2) = s3(codes3(5) + codes3(0) * 2, codes3(4) + codes3(3) * 2 + codes3(2) * 4 + codes3(1) * 8)
        s(3) = s4(codes4(5) + codes4(0) * 2, codes4(4) + codes4(3) * 2 + codes4(2) * 4 + codes4(1) * 8)
        s(4) = s5(codes5(5) + codes5(0) * 2, codes5(4) + codes5(3) * 2 + codes5(2) * 4 + codes5(1) * 8)
        s(5) = s6(codes6(5) + codes6(0) * 2, codes6(4) + codes6(3) * 2 + codes6(2) * 4 + codes6(1) * 8)
        s(6) = s7(codes7(5) + codes7(0) * 2, codes7(4) + codes7(3) * 2 + codes7(2) * 4 + codes7(1) * 8)
        s(7) = s8(codes8(5) + codes8(0) * 2, codes8(4) + codes8(3) * 2 + codes8(2) * 4 + codes8(1) * 8)
   
    's盒运算32位结果
    for i = 0 to 7
        rets(i * 4 + 0) = (s(i) and &h8) \ &h8
        rets(i * 4 + 1) = (s(i) and &h4) \ &h4
        rets(i * 4 + 2) = (s(i) and &h2) \ &h2
        rets(i * 4 + 3) = (s(i) and &h1) \ &h1
    next
   
   
    for i = 0 to 31
        'p变换
        codep(i) = rets(p(i))
       
        '产生l12,r12
        r12(i) = l11(i) xor codep(i)
        l12(i) = r11(i)
    next
   
    '进行第13次迭代
    for i = 0 to 47
        codee(i) = r12(e(i))                 '经过e变换扩充,由32位变为48位
        codee(i) = codee(i) xor k4(i)        '与k4按位作不进位加法运算
    next
   
    '分8组
    for i = 0 to 5
        codes1(i) = codee(i)
        codes2(i) = codee(i + 6)
        codes3(i) = codee(i + 12)
        codes4(i) = codee(i + 18)
        codes5(i) = codee(i + 24)
        codes6(i) = codee(i + 30)
        codes7(i) = codee(i + 36)
        codes8(i) = codee(i + 42)
    next
   
    's盒运算,得到8个数
   
        s(0) = s1(codes1(5) + codes1(0) * 2, codes1(4) + codes1(3) * 2 + codes1(2) * 4 + codes1(1) * 8)
        s(1) = s2(codes2(5) + codes2(0) * 2, codes2(4) + codes2(3) * 2 + codes2(2) * 4 + codes2(1) * 8)

本文关键:DES
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top