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

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

本文简介:选择自 agamem 的 blog

        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))
       
        '产生l11,r11
        r16(i) = l15(i) xor codep(i)
        l16(i) = r15(i)
    next
   
    for i = 0 to 31
        bincode(i) = r16(i)
        bincode(i + 32) = l16(i)
    next
   
    for i = 0 to 63
        codeip(i) = bincode(ip_1(i))
    next
   
    for i = 0 to 7
        tempreturn(i) = codeip(i * 8 + 0) * &h80
        tempreturn(i) = tempreturn(i) + codeip(i * 8 + 1) * &h40
        tempreturn(i) = tempreturn(i) + codeip(i * 8 + 2) * &h20
        tempreturn(i) = tempreturn(i) + codeip(i * 8 + 3) * &h10
        tempreturn(i) = tempreturn(i) + codeip(i * 8 + 4) * &h8
        tempreturn(i) = tempreturn(i) + codeip(i * 8 + 5) * &h4
        tempreturn(i) = tempreturn(i) + codeip(i * 8 + 6) * &h2
        tempreturn(i) = tempreturn(i) + codeip(i * 8 + 7) * &h1
    next

    copymemory breturn(j), tempreturn(0), 8
next


本文关键:DES
  相关方案
Google
 

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

go top