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

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

本文简介:选择自 agamem 的 blog

    dim j as integer
    '取密钥的前8字节
    tempkey = strconv(skey, vbfromunicode)
    redim preserve tempkey(7)
   
    for i = 0 to 7
        binkey(i * 8 + 0) = (tempkey(i) and &h80) \ &h80
        binkey(i * 8 + 1) = (tempkey(i) and &h40) \ &h40
        binkey(i * 8 + 2) = (tempkey(i) and &h20) \ &h20
        binkey(i * 8 + 3) = (tempkey(i) and &h10) \ &h10
        binkey(i * 8 + 4) = (tempkey(i) and &h8) \ &h8
        binkey(i * 8 + 5) = (tempkey(i) and &h4) \ &h4
        binkey(i * 8 + 6) = (tempkey(i) and &h2) \ &h2
        binkey(i * 8 + 7) = (tempkey(i) and &h1) \ &h1
    next
   
    'pc_1转换
    for i = 0 to 55
        keypc_1(i) = binkey(pc_1(i))
    next
   
    '生成c0,d0
    for i = 0 to 27
        c0(i) = keypc_1(i)
        d0(i) = keypc_1(i + 28)
    next
   
    '***************************************************k1
    '生成c1,d1
    for i = 0 to 26
        c1(i) = c0(i + lsi(1))
        d1(i) = d0(i + lsi(1))
    next
    c1(27) = c0(0)
    d1(27) = d0(0)
   
    '组合c1,d1成c_d
    for i = 0 to 27
        c_d(i) = c1(i)
        c_d(i + 28) = d1(i)
    next
   
    'pc_2转换,生成k1
    for i = 0 to 47
        k1(i) = c_d(pc_2(i))
    next
   
    '***************************************************k2
    '生成c2,d2
    for i = 0 to 26
        c2(i) = c1(i + lsi(2))
        d2(i) = d1(i + lsi(2))
    next
    c2(27) = c1(0)
    d2(27) = d1(0)
   
    '组合c2,d2成c_d
    for i = 0 to 27
        c_d(i) = c2(i)
        c_d(i + 28) = d2(i)
    next
   
    'pc_2转换,生成k2
    for i = 0 to 47
        k2(i) = c_d(pc_2(i))
    next
   
    '***************************************************k3
    '生成c3,d3
    for i = 0 to 25
        c3(i) = c2(i + lsi(3))
        d3(i) = d2(i + lsi(3))
    next
    c3(26) = c2(0)
    d3(26) = d2(0)
    c3(27) = c2(1)
    d3(27) = d2(1)
   
    '组合c3,d3成c_d
    for i = 0 to 27
        c_d(i) = c3(i)
        c_d(i + 28) = d3(i)
    next
   
    'pc_2转换,生成k3
    for i = 0 to 47
        k3(i) = c_d(pc_2(i))
    next
   
    '***************************************************k4
    '生成c4,d4
    for i = 0 to 25
        c4(i) = c3(i + lsi(4))
        d4(i) = d3(i + lsi(4))
    next
    c4(26) = c3(0)
    d4(26) = d3(0)
    c4(27) = c3(1)
    d4(27) = d3(1)
   
    '组合c4,d4成c_d
    for i = 0 to 27
        c_d(i) = c4(i)
        c_d(i + 28) = d4(i)
    next
   
    'pc_2转换,生成k4
    for i = 0 to 47

本文关键:DES
  相关方案
Google
 

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

go top