ACCESS加密
以前,我曾对ACCESS中加密问题向大家请过教,现再对原例子的问题请教。密码函数在网上下载,代码如下:
Public Function Encrypt(ByVal strSource As String, ByVal Key1 As Byte, _
ByVal Key2 As Integer) As String
Dim bLowData As Byte
Dim bHigData As Byte
Dim i As Integer
Dim strEncrypt As String
Dim strChar As String
For i = 1 To Len(strSource)
'从待加(解)密字符串中取出一个字符
strChar = Mid(strSource, i, 1)
' 取字符的低字节和Key1进行异或运算
bLowData = AscB(MidB(strChar, 1, 1)) Xor Key1
'取字符的高字节和K2进行异或运算
bHigData = AscB(MidB(strChar, 2, 1)) Xor Key2
'将运算后的数据合成新的字符
strEncrypt = strEncrypt & ChrB(bLowData) & ChrB(bHigData)
Next
Encrypt = strEncrypt
End Function
在原例子的修改密码窗体中(例子见本站“数据库技术”版块的贴)
Private Sub confirm_Click()
If CurrentProject.AllForms("background").IsLoaded Then
If IsNull(Password) Then
MsgBox "请输入原密码...", vbExclamation + vbOKOnly, "系统提示"
Me.Password.SetFocus
ElseIf Encrypt(DLookup("Password", "UserList", "Username='" & UserName & "'"), 123, 33) <> Me.Password Then
MsgBox "您输入的原密码不正确,请重新输入...", vbExclamation + vbOKOnly, "系统提示"
Me.Password.SetFocus
ElseIf IsNull(Password2) Then
MsgBox "请输入新密码...", vbExclamation + vbOKOnly, "系统提示"
Me.Password2.SetFocus
ElseIf IsNull(Password3) Then
MsgBox "请输入确认密码...", vbExclamation + vbOKOnly, "系统提示"
Me.Password3.SetFocus
ElseIf Me.Password3 <> Me.Password2 Then
MsgBox "您输入的确认密码和新密码不一致,请重新输入...", vbExclamation + vbOKOnly, "系统提示"
Me.Password3.SetFocus
Else
Me.Password4 = Encrypt([Password3], 123, 33)
DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE UserList SET UserList.[Password] = [Password4] WHERE ((Username=Forms![RC]![Username]));"
DoCmd.SetWarnings True
MsgBox "密码修改成功,请牢记!重新登录时用新密码!", vbExclamation + vbOKOnly, "系统提示"
DoCmd.Close
End If
如果我在修改密码时输入8位由数字及英文字符组成的密码,但在表中所显示出来的符号只有6位,是什么原因呢?在是述函数中,最好只能输入6位数的密码吗?
盼大家指教。
|