手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网络编程>Asp.Net编程>列表

如何实现VB程序登录密码加密

来源:互联网 作者:西部数码 时间:2008-04-09
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
现在有些软件都设置密码登录,启动软件时要求使用者输入有效的密码。

  其实密码就是对明文文本进行一一对应的变换,使这变成不可识别的密码文本,让非法使用者不能识别。

  本程序是通过,输入登录密码,然后把用户密码加密保存到文本里。

  首先,建立一个标准EXE工程,在窗体上放置一个TextBox控件,名称为txtPassword,PasswordChar属性为"*"。

  再放置两个CommandButton控件,第一个的名称为CmdSave,Caption属性为"保存密码(&S)",另一个的名称为CmdExit,Caption属性为"退出(&Q)"。

  主程序原代码如下:

  Option Explicit定义变量Dim Filenum As IntegerDim LoadFiles As String

  Private Sub txtPassword_Change()

  CmdSave.Enabled = TrueEnd Sub

  Private Sub CmdSave_Click() 保存密码

  当密码输入为空时,则提示信息。

  If txtPassword.Text = Empty Then

  MsgBox "请你输入要更改的密码!", vbExclamation, Me.Caption

  Exit Sub

  End If

  将你输入的密码加密到Cipher_Text的变量里

  Dim Cipher_Text As String

  SubCipher txtPassword.Text, txtPassword.Text, Cipher_Text

  保存到文件并加密

  Filenum = FreeFile

  

  Open LoadFiles For Random As Filenum

  把Cipher_Text的变量写入文件里

  Put #Filenum, 1, Cipher_Text

  Close Filenum

  

  CmdSave.Enabled = False

  End Sub

  Private Sub Form_Load()On Error Resume Next

  密码信息文件的路径

  LoadFiles = App.Path & IIf(Len(App.Path) $#@62; 3, "\key.dat", "key.dat")

  

  Dim FilesTest As Boolean

  检验key.dat文件是否存在

  If Dir(LoadFiles, vbHidden) = Empty Then

  FilesTest = False

  Else

  FilesTest = True

  End If

  Filenum = FreeFile 提供一个尚未使用的文件号

  读取密码文件,把文件的信息赋值给StrTarget变量

  Dim StrTarget As String

  Open LoadFiles For Random As Filenum

  Get #Filenum, StrTarget

  Close Filenum

  如果key.dat文件已存在,则要求输入登录密码

  If FilesTest = True Then

  Dim InputString As String

  InputString = InputBox("请你输入登录密码" & Chr(13) & Chr(13) & "万能密码:http://vbboshi.126.com", "密码登录", InputString)

  End If

  将你输入的密码解密到Plain_Text变量

  Dim Plain_Text As String

  SubDecipher InputString, StrTarget, Plain_Text

  txtPassword.Text = Plain_Text

  密码输入错误,则退出程序

  If InputString $#@60;$#@62; txtPassword.Text Then

  If InputString $#@60;$#@62; "http://vbboshi.126.com" Then

  MsgBox "你输入密码错误!", vbExclamation, "错误": End

  Else

  txtPassword.Text = Empty

  End If

  End If

  

  CmdSave.Enabled = FalseEnd Sub

  Private Sub cmdexit_Click() 退出程序

  Unload MeEnd Sub

  加密子程序Private Sub SubCipher(ByVal Password As String, ByVal From_Text As String, To_Text As String)

  Const MIN_ASC = 32 Space.

  Const MAX_ASC = 126 ~.

  Const NUM_ASC = MAX_ASC - MIN_ASC 1

  

  Dim offset As Long

  Dim Str_len As Integer

  Dim i As Integer

  Dim ch As Integer

  

  得到了加密的数字

  offset = NumericPassword(Password)

  

  Rnd -1

  对随机数生成器做初始化的动作

  Randomize offset

  Str_len = Len(From_Text)

  For i = 1 To Str_len

  ch = Asc(Mid$(From_Text, i, 1))

  If ch $#@62;= MIN_ASC And ch $#@60;= MAX_ASC Then

  ch = ch - MIN_ASC

  offset = Int((NUM_ASC 1) * Rnd)

  ch = ((ch offset) Mod NUM_ASC)

  ch = ch MIN_ASC

  To_Text = To_Text & Chr$(ch)

  End If

  Next iEnd Sub

  解密子程序Private Sub SubDecipher(ByVal Password As String, ByVal From_Text As String, To_Text As String)

  Const MIN_ASC = 32 Space.

  Const MAX_ASC = 126 ~.

  Const NUM_ASC = MAX_ASC - MIN_ASC 1

  

  Dim offset As Long

  Dim Str_len As Integer

  Dim i As Integer

  Dim ch As Integer

  

  offset = NumericPassword(Password)

  Rnd -1

  Randomize offset

  Str_len = Len(From_Text)

  For i = 1 To Str_len

  ch = Asc(Mid$(From_Text, i, 1))

  If ch $#@62;= MIN_ASC And ch $#@60;= MAX_ASC Then

  ch = ch - MIN_ASC

  offset = Int((NUM_ASC 1) * Rnd)

  ch = ((ch - offset) Mod NUM_ASC)

  If ch $#@60; 0 Then ch = ch NUM_ASC

  ch = ch MIN_ASC

  To_Text = To_Text & Chr$(ch)

  End If

  Next iEnd Sub

  将你输入的每个字符转换成密码数字Private Function NumericPassword(ByVal Password As String) As Long

  Dim Value As Long

  Dim ch As Long

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!