05-25日<一个简单实用的 vb 加密/解密算法>之改进

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

本文简介:选择自 neil 的 blog

在看了网友 everjoe评论后,俺改进了一下该程序,其实也就是把w系列的函数用b系列去替代,然后就支持中文加密了

修改后的全部代码入下:

function usercode(password as string) as string
'用户口令加密
    dim il_bit, il_x, il_y, il_z, il_len, i as long
    dim is_out as string
    il_len = lenb(password)
    il_x = 0
    il_y = 0
    is_out = ""
    for i = 1 to il_len
        il_bit = ascb(midb(password, i, 1))    'b系列支持中文
       
        il_y = (il_bit * 13 mod 256) + il_x
        is_out = is_out & chrb(fix(il_y))  '取整 int和fix区别: fix修正负
        il_x = il_bit * 13 / 256
    next
    is_out = is_out & chrb(fix(il_x))
   
    password = is_out
    il_len = lenb(password)
    il_x = 0
    il_y = 0
    is_out = ""
    for i = 1 to il_len
        il_bit = ascb(midb(password, i, 1))
        '取前4位值
        il_y = il_bit / 16 + 64
        is_out = is_out & chrb(fix(il_y))
        '取后4位值
        il_y = (il_bit mod 16) + 64
        is_out = is_out & chrb(fix(il_y))
    next
    usercode = is_out
end function


function userdecode(password as string) as string
'口令解密
    dim is_out as string
    dim il_x, il_y, il_len, i, il_bit as long

    il_len = lenb(password)
    il_x = 0
    il_y = 0
    is_out = ""
    for i = 1 to il_len step 2
        il_bit = ascb(midb(password, i, 1))
        '取前4位值
        il_y = (il_bit - 64) * 16
        '取后4位值
        'dd = ascw(mid(password, i + 1, 1)) - 64
        il_y = il_y + ascb(midb(password, i + 1, 1)) - 64
        is_out = is_out & chrb(il_y)
    next

    il_x = 0
    il_y = 0
    password = is_out
    is_out = ""

    il_len = lenb(password)
    il_x = ascb(midb(password, il_len, 1))
    for i = (il_len - 1) to 1 step -1
        il_y = il_x * 256 + ascb(midb(password, i, 1))
        il_x = il_y mod 13
        is_out = chrb(fix(il_y / 13)) & is_out
    next
    userdecode = is_out
end function

 

 

本文关键:VB 加密/解密 汉字加密
  相关方案
Google
 

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

go top