密码如何如何保存?

sndir 2003-05-11 07:03:24
我再做毕业设计,登录时候要让用户输入密码,请问这个密码该如何保存?(要加密的,不能让人一下就破解了)?保存再那里?(我想保存再注册表里,但是该以什么形式保存呢?)如果我还想记住这个密码,这样用户下次可以不用输入?该如何实现?
...全文
260 7 点赞 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
sndir 2003-05-11
多谢楼上的各位大哥帮忙!!
小弟知道了!
  • 打赏
  • 举报
回复
TimLee✿ 2003-05-11
注册表放加密后的字符串,反正是毕业设计,随便加点密就可以了~~

思路:把密码转换成Ascii然后加密再然后存放!

一个简单的加密,你可以自己改的复杂一点(比如再乘上个什么数)


'声明API函数和一些常量用于操作注册表
Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_USERS = &H80000003
Public Const HKEY_PERFORMANCE_DATA = &H80000004
Public Const ERROR_SUCCESS = 0&

Declare Function RegCloseKey Lib "advapi32.dll" (ByVal Hkey As Long) As Long
Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal Hkey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal Hkey As Long, ByVal lpSubKey As String) As Long
Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal Hkey As Long, ByVal lpValueName As String) As Long
Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal Hkey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal Hkey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal Hkey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Public Const REG_SZ = 1 ' Unicode nul terminated string
Public Const REG_DWORD = 4


Private Sub Cmdok_Click() '当确认被按下时

'T1,T2是两个文本框,用户输入密码和确认密码


If T1.Text <> T2.Text Then
MsgBox "两次输入的密码不一致!", vbOKOnly + vbExclamation, "出错啦!"
T1.Text = ""
T2.Text = ""
T1.SetFocus
Exit Sub
ElseIf T1.Text = "" Then
MsgBox "你没有输入密码呀???!!", vbOKOnly + vbExclamation, "出错啦!"
T1.Text = ""
T2.Text = ""
T1.SetFocus
Exit Sub
Else
Call Setp '调用保存密码过程
MsgBox "设置密码成功!"
Cmdok.Enabled = False
End Sub


'此过程用于加密和密码保存

Sub Setp()
passWord = T1.Text
Dim TmpI(200), i As Integer
Dim Tmp(200), PWD As String
For i = 1 To Len(passWOrd)
Tmp(i) = Mid(passWOrd, i, 1) '将密码拆开并保存到变量中等待加密
TmpI(i) = Asc(Tmp(i)) '将拆开的字符串转成ASCII码
TmpI(i) = TmpI(i) + (i * (i + 3)) '对Ascii加密 你可以弄的复杂一点
TmpI(i) = Tmp(i) + 456 '这句话是让加密后的Ascii的长度达到3位,这样可以方便解密,往下看解密过程就知道了
PWD = PWD & TmpI(i) '把加密后的Ascii码连接起来,准备存到注册表里
Call saveString(HKEY_CURRENT_USER, "Software\这里的字段你自己填\我的程序", "这个是字串名", (PWD)) '我打汉字的部分你可以自己添,最好把存到Software\Microsoft里这样比较有迷惑性 ^_^

End Sub

解密过程很简单~~
用TPWD = getString(HKEY_CURRENT_USER, "Software\你自己写的项名", "字段名") '把密文读出来给TPWD
  • 打赏
  • 举报
回复
使用数据库记录保存密码,使用注册表纪录上一次的密码。
  • 打赏
  • 举报
回复
脆皮大雪糕 2003-05-11
将密码作hash运算(比如MD5算法)后产生密文保存在注册表或者别的什么地方,可以将密文转换成十六进制以ascii形式保存,密码验证的时候将用户的密码也经过hash运算以后进行比较。md5的算法代码可以在网络上搜索到。
  • 打赏
  • 举报
回复
liuyan4794 2003-05-11
可以从网上找加密算法,很多
这样,别人打开你的数据库也不知道密码
  • 打赏
  • 举报
回复
mahongliang1983 2003-05-11
可以用ini文件(这个比较麻烦)
也可以用文本文件
还有上面的大哥说的,用数据库~
  • 打赏
  • 举报
回复
lihonggen0 2003-05-11
用数据库吧

access

在access 里建一张表,保存

数据访问用ADO
  • 打赏
  • 举报
回复
相关推荐
发帖
VB基础类
创建于2007-09-28

7522

社区成员

VB 基础类
申请成为版主
帖子事件
创建了帖子
2003-05-11 07:03
社区公告
暂无公告