分享

[VB]使用VB6对密码进行编码和解码

 枫叶cn 2013-03-28

[VB]使用VB6对密码进行编码和解码

ZDNet软件频道 时间:2004-07-06 作者:Builder.com |  我要评论()
本文关键词:vb
不少程序都需要设置密码以达到保护的目的。不过现在很多用户都有能力自己修改注册表,而程序员肯定不会希望随便哪个用户都可以进入注册表查看到程序的密码。另外,网页使用GET请求传送的密码很容易被截获。这也正是我们为什么要对密码进行简单加密的原因。
本文译自Builder.com,未经许可请勿转载不少程序都需要设置密码以达到保护的目的。不过现在很多用户都有能力自己修改注册表,而程序员肯定不会希望随便哪个用户都可以进入注册表查看到程序的密码。另外,网页使用GET请求传送的密码很容易被截获。这也正是我们为什么要对密码进行简单加密的原因。

简单的加密算法(比如简单的ASCII值转换)有时候比复杂的算法更具优势。假设密码为“ajax7”,你可以按照以下方式进行编码:

  • “a”的ASCII 值为97,对其加1,变为98,这个值的ASCII 码为“b”。
  • “j”的ASCII 值为106,对其加1,变为107,这个值的ASCII 码为“k”。
  • “a”的ASCII 值为97,对其加1,变为98,这个值的ASCII 码为“b”。
  • “x”的ASCII 值为120,对其加1,变为121,这个值的ASCII 码为“y”。
  • “7”的ASCII 值为55,对其加1,变为56,这个值的ASCII 码为“8”。

编码后的密码就是bkby8,解码的过程和编码相反,每个ASCII值减1即可。

以下vb代码就是采用了这种编码算法(假设密码只包含数字和字母)

Public Function EncodePassword(pw As String) As String

' 传递pw,并返回编码后的pw。

Dim codedPW As String
Dim i As Integer
Dim ch As String * 1

If Len(pw) = 0 Then
    EncodePassword = ""
    Exit Function
End If

codedPW = ""
pw = Trim(pw)

For i = 1 To Len(pw)
    ch = Mid(pw, i, 1)
    codedPW = codedPW & Chr(Asc(ch) + 1)
Next i

EncodePassword = codedPW

End Function

Public Function DecodePassword(codedPW As String) As String

' 传递编码后的pw,并返回解码的 pw.

Dim decodedPW As String
Dim i As Integer
Dim ch As String * 1

If Len(codedPW) = 0 Then
    DecodePassword = ""
    Exit Function
End If

decodedPW = ""
codedPW = Trim(codedPW)

For i = 1 To Len(codedPW)
    ch = Mid(codedPW, i, 1)
    decodedPW = decodedPW & Chr(Asc(ch) - 1)
Next i

DecodePassword = decodedPW

End Function

稍复杂的编码算法有很多种,比如对每个ASCII值所加的不是一个常数,而是根据字母的位置加上不同的值。

虽然这些加密算法对于FBI或CIA来说,并不难解码,但对于普通用户,它能有效地防止以明码保存密码带来的危险。


作者:Peter Aitken。自从Visual Basic 1.0版问世以来,Peter Aitken就一直在使用vb编程。他已经编写过很多关于VisualBasic以及其他计算机和编程方面的书籍和杂志文章了。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多