这个函数不能实现两次异或得到原字符串,数据库里存储的是一个16进制字符串
这个加密算法比较简单,我的思路就是把登陆的密码和一个密钥进行异或,异或的结果转换为16进制串保存到数据库中,在程序登陆的时候把用户输入的登陆密码进行同样的处理,和数据库中保存的结果对比,如果相同则正确,不同则提示错误。
'加密函数
Public Function Encrypt(StrEncrypt As String) As String
Dim x, y As Integer
Dim C1, C2,C3 As String
Dim CodeWord As String'密钥
Dim KeyLen As Integer'密钥长度
Dim strEncryptLen As Integer‘需要加密的字符串的长度
Dim Num As Integer 'xor后的值
Dim HexNum As String '16进制字符串
Dim HexNumLen As Integer
On Error GoTo err
strEncryptLen = Len(StrEncrypt) '字符串长度
CodeWord = "zhaojiaming"
KeyLen = Len(CodeWord)
Encrypt = ""
For x = 1 To strEncryptLen
C1 = Mid(StrEncrypt, x, 1) '按顺序取字符串一个字符
C2 = left(CodeWord, 1) '取密钥第一个字符
Num = Asc(C1) Xor Asc(C2) ' 异或一次
For y = 2 To KeyLen
C3 = Mid(CodeWord, y, 1) '按顺序取密钥一个字符
Num = Asc(C3) Xor Num '连续异或
Next y
HexNum = Hex(Num)'转换为16进制串
HexNumLen = Len(HexNum)
If HexNumLen <> 2 Then
HexNum = Format(CStr(Hex(Num)), "00") '格式化16进制串长度
End If
Encrypt = Encrypt + HexNum '连接成16进制字符串
Next x
Exit Function
err:
MsgBox err.Description, vbInformation, "提示信息"
End Function
正文
我的登陆密码的加密方法2005-09-01 10:14:00
【评论】 【打印】 【字体:大 中 小】 本文链接:http://blog.pfan.cn/killer/4330.html
阅读(3338) | 评论(0)
版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!
评论