正文

我的登陆密码的加密方法2005-09-01 10:14:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/killer/4330.html

分享到:

这个函数不能实现两次异或得到原字符串,数据库里存储的是一个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

阅读(3338) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册