密码算法大致:
Str=”ABCDEFGHIJKLMN…” '共94个可打印字符
Key = 2^0,2^1,2^2… 2^5 到2^5
加密过程:明文,反转,加密,密文
每个明文对应2个密文
解密过程:密文,解密,反转,原文
每2个密文对应1个原文
伪码:
加密过程
Str=”ABCDEFGHIJKLMN…” '共94个可打印字符
dec_pass ’加密后字符串,密文
org_pass ’明文
org_pass.setReverse ’字符串反转
for i=0 to org_pass.length
index = Asc(org_pass.substring(i,1)) –2^(i mod 6) ’取ASCII码值
if index > 94 then
dec_pass= dec_pass & “1” &Str(index - 32) ’ Str(index ) 字符串中的字符
else
dec_pass= dec_pass & “0” &Str(index )
end if
end for
return dec_pass
解密过程
org_pass ’原文
for i=1 to dec_pass.length step 2
if dec_pass.substring(i,1) = “1” then
org_pass = org_pass &chr(inStr(str,dec_pass.subString(i+1,1)) + (i+1) mod 6 + 32)
else ’ chr(intAscii) 返回对应ASCII码的字符,为这符串类型
org_pass = org_pass &chr(inStr(str,dec_pass.subString(i+1,1)) + (i+1) mod 6 )
end if
end for
org_pass.setReverse
return org_pass
具体实现,这里就不详述,有兴趣的,可以试试,本人用VB实现过,现贴结果如下:
Org_pass: 123456
Dec_pass: 0z0w0r0i0R0v
算法比较简单,但还算实用,哈。。。