说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

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

HTML文档下载 WORD文档下载 PDF文档下载
VB如何实现VB程序登录密码加密
作者:李志东
现在有些软件都设置密码登录,启动软件时要求使用者输入有效的密码。其实密码就是对明文文本进行一一对应的变换,使这变成不可识别的密码文本,让非法使用者不能识别。

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

首先,建立一个标准EXE工程,在窗体上放置一个TextBox控件,名称为txtPassword,PasswordChar属性为"*"。再放置两个CommandButton控件,第一个的名称为CmdSave,Caption属性为"保存密码(&S)",另一个的名称为CmdExit,Caption属性为"退出(&Q)"。

主程序原代码如下:
Option Explicit
'定义变量
Dim Filenum As Integer
Dim LoadFiles As String

Private Sub txtPassword_Change()
CmdSave.Enabled = True
End 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) > 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, 1, 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 <> txtPassword.Text Then
If InputString <> "http://vbboshi.126.com" Then
MsgBox "你输入密码错误!", vbExclamation, "错误": End
Else
txtPassword.Text = Empty
End If
End If

CmdSave.Enabled = False
End Sub

Private Sub cmdexit_Click() '退出程序
Unload Me
End 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 >= MIN_ASC And ch <= 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 i
End 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 >= MIN_ASC And ch <= MAX_ASC Then
ch = ch - MIN_ASC
offset = Int((NUM_ASC + 1) * Rnd)
ch = ((ch - offset) Mod NUM_ASC)
If ch < 0 Then ch = ch + NUM_ASC
ch = ch + MIN_ASC
To_Text = To_Text & Chr$(ch)
End If
Next i
End Sub

'将你输入的每个字符转换成密码数字
Private Function NumericPassword(ByVal Password As String) As Long
Dim Value As Long
Dim ch As Long
Dim Shift1 As Long
Dim Shift2 As Long
Dim i As Integer
Dim Str_len As Integer

'得到字符串内字符的数目
Str_len = Len(Password)
'给每个字符转换成密码数字
For i = 1 To Str_len
ch = Asc(Mid$(Password, i, 1))
Value = Value Xor (ch * 2 ^ Shift1)
Value = Value Xor (ch * 2 ^ Shift2)

Shift1 = (Shift1 + 7) Mod 19
Shift2 = (Shift2 + 13) Mod 23
Next i
NumericPassword = Value
End Function

Email: gzboshi@21cn.com

本程序在 Windows98SE+VB5.0 中运行通过。
(广州 李志东)
如何成为一名架构师? Apache Hadoop集群的安全性架构 Wood Camera开发者访谈:我们如何冲到榜首的 代码审查:程序员内炼之道 Twitter Q1推广告API 收入剑指10亿 Dell:在OpenStack成熟后才会推出服务 一个开源工作者对开源与赚钱的一些想法 宏碁:Windows8仍不成功 Chrome表现令人意外 雅虎发布Q4财报 净利润同比下滑8% 游戏机禁售令起风波,索尼任天堂股价大涨 国外开发者吐槽Facebook Android设计一例 Rovio转向发行业务 将发布新作Tiny Thief 上山下海 “硬汉”服务器无所不能 访金山云CTO杨刚:开源改进PK自主研发,技术驱动前行 苹果涉及色情问题,且进一步恶化 开源产品系列:面向组件的Web框架tapestry 360指责百度窃取用户信息 公布美杜莎插件技术分析 苹果正式发布iOS 6.1 最快本周日即可越狱 苹果高管:运行iOS 6的设备达3亿 Chrome OS 黑客大赛总奖金为314.159万美元 微软雷德蒙研究院副总裁:从计算研究到惊人发明 还驾驭不了4核? 别人已模拟出百万核心上的并行 RIM将网络直播BlackBerry 10发布会 解读TDD的五大误区 Amazon 2012财年Q4财报:电子书业务增长70% 从暴风影音CTO到创业者:画中画相机话中话 为什么Android应用开发总要比iOS晚? 传奇VC马克.安德雷森:未来的企业什么样? 呼吁国会通过“创业签证”:奥巴马助力美国招揽海外人才 Surface Pro最低1019美元,价值究竟如何? 搜狗号码通产品经理谈微创新 数据和运营更关键 请问如何才能在windows 2000 server 上装MTS? 有女朋友而且上网和别的mm聊天的入内签名! 如何显示不同的颜色... 有关网络开发和com的问题,高分征集关注和提供方案! 探讨一下safearray 的使用问题 关于QQ界面的制作? 在主界面中添加一副图片的问题被遮住的问题 有一个EXE执行时,我希望能删除它自己 如何在程序中获取IE当前浏览网页的IP地址或域名地址? 有南京的兄弟吗?我想买《delphi4编程技术内幕》,就是Charlie Calvert那本精华。 如何在工具条上加载图片作为工具条的背景 怎样来写这个数据连接? dbgrid里的赋值问题 Borland自带的ADO例子为什么也出错啊? pb 出现 maximum script size exceeded 保存错误 愿意到上海的软件高手可以来看看,真是没想到 我这里有一个链表类,我怎么在别的文件中使用它呢? CArray的问题? 编译器出问题了! 那里可以找到asp.net的一些原码,现在市面上的书没什么有深度的 修改PING数据包VB能做到么?高手来指点,中级来探讨,初级来学习,分数大大的有~ ;) 请教(qingrun,qingrun等大虾),请指教? weblogic高手请指点!这是不是设置不对造成的? 这样都行啊----老板是写软件的好沟通的很,干活痛快 标签hidden是干什么的,怎么使用 关于treeview中+/-按钮 动态创建了多个StaticText,我想实现将任意一个StaticText拖动到另一个StaticText上后交换他们的几个属性,该如何做? 出问题了 读取数据失败,谁能解释一下原因 向往PB之路但突遇路障,盼高手急施援手,予以鼓励!(PB8.0) 还是打包问题,烦死我了:( 请问怎么把日期相加? sql server各版本支持的最大数据库是多大? Imail的软件有什么作用 ?两个时间格式的字段,我要取二者的差(还是时间格式)? 别人用MODEM拨号到我的路由器,现我要做一软件对拨号的日志进行查询统计, 我如何取出CISCO5300中的拨号日志??? 还是打包问题,烦死我了:( 菜单与工具条的高度如何取得?? 出问题了 请问,VB能否做交叉报表?谢谢!! 那位大哥知道怎么能让一个服务器同时解析两个域名。(2K服务器) 用MODEM拨号到路由器,现我要做一软件对拨号的日志进行查询统计.我如何取出CISCO5300中的拨号日志? 前面多谢大家了,我的BCB编译缓慢,是否还和操作系统有关呢??我用的win2000 Server版的。 希望现在的论坛能够解决贴图的问题. WebSphere 的jsp、servlet和javabean放在哪个目录下?在线等候结帐 请问,网络程序员什么时候报名? 都有些什么工具,可以将Web Application打包分发? 在oracle中不能将long字段查找出来后在插入到另外一个表嘛? 求助:用Delphi怎么样生成一个新的XML文件 怎样复制一个窗口(FORM)的全部组件? 请问在sqlserver2000可不可以通过代理服务器连接远程数据库服务器? 关于椭圆与双曲线准线的疑问?在书中的椭圆和双曲线这两节中都有“当点M与一个定点的距离和它到一条定直线的距离的比试一个常数的话,那么这点的轨迹就是椭圆(双曲线).”当点M与一 "绿色化学"要求从根本上减少或杜绝污染.下列做法符合"绿色化学"理念的是( ) A.试验中未说"绿色化学"要求从根本上减少或杜绝污染.下列做法符合"绿色化学"理念的是( )A.试验中未说明 已知以F1(-2,0)F2(2,0)为焦点的椭圆与直线X+√3*Y+4=0有且仅有一个交点,则椭圆的长轴长为多少? 锂很容易与氧、氮、硫等化合,化学方程式是什么请注明反应条件 下列不符合绿色化学概念的是 高中数学椭圆题~怎么做呢?过程如何解~~给个思路~~偶知道答案最大值2√2~但就是不知怎么证明第二小题哦~ 两种均含氢氧钠硫四种元素的化合物相互反应放出气体的化学方程式 英语 填词 关于椭圆的若椭圆的两个焦点(-2,0),(2,0),且椭圆过点(5/2,3/2),则椭圆方程是多少? 一辆公共汽车上,买票的乘客只占乘车人数的三分之一,但售货员和司机却无动于衷.车山其他的乘客也不是小孩,也不使用月票,这是怎么回事呢? 英语填词(初一水平)That TV ______ is very funny.(6位字母的单词,开头是S)She always wears a ______ .(4位字母的单词,开头是c,结尾是p)It's windy.Where is my ______?(5位字母的单词)请把所有能填的单词 碳原子数小于10的烷烃分子中,一氯代物没有同分异构体的有四种类,他们的结构简式为 甲烷和氯气的混合气体在光照条件下生成的氯化氢是什么状态?氯化氢 是液态还是气态?常温下 光照条件 能使酸性高锰酸钾褪色都有哪几种物质? 高一物理题(天体运动)打了一晚上字,打得手酸.所以只好把题目拍下来了. 能否使用制氯化氢气体的装置来制取氯气,为什么 英语填词练习(靠你了)1091206782,有意为我解答的来找我,我也想,但手机不行 高一物理天体运动试题 关于溴的反应方程式1.反应物中 溴元素被氧化--------2.反应物中 溴元素被还原-------- 英语填词题怎么能确定填的的时态呢 特别是过去时的那些时态 总是分不清该填什么 简单的有那种明显的语言现象的我会 可是有很多题都是一大段话 根本没有明显的提示词 而且意思很多都 会计道德法规中的慎独、慎微、慎省、慎欲分别是啥意思?麻烦知道的告诉一下,谢 钠与溴反应方程式的条件 几道英语填词题,急~~~!1.The two countries are__war.(at/about/with)2.The rain was beating __the windows.(in/against/at)3.The train is ten minutes__time.(behind/after/before)4.there are many other people __Tom at the party.(but/beside/besides)5. 慎独、慎微、慎初、慎交什么意思 下列不符合“绿色化学”的是?A:就地焚烧 B:发酵后作农家肥料C:加工成精饲料D:制造沼气 英语填词题全部 慎独,慎微, 下列说法正确且符合绿色化学思想的是A.为减少对粮食的依赖,可以用乙烯与水反应制乙醇以满足人们对酒精饮料的需求B.用CO2和H2可以合成CH3OH,该反应中各原子的利用率为100%C.可以寻找新型催 世界上第一个登上月球的航天员是( )国家的( )名. 君子为什么要慎独, who whoes1.____has taken my sunglasses?2.Can you tell me ____ bicycle it is 3.____is over there ,talking with our class teacher?4.____so you thnk will the election one ones5.I lost my pen yesterday.I am going to buy____ after school.6.The story he to 含碳原子个数为6或小于6的烷烃分子中,其一卤代烷烃不存在同分异构体的烷烃共有()种? 宇宙中两颗相距较近的天体均为“双星”,它们以二者连线上的某一点为圆心做匀速圆周运动,而不致因为万有引力的作用而吸引到一起.设两者质量分别为m1和m2,求:(1)双星转动中心的位置 下列研究思路,符合绿色化学思想的是A.研制不产生污染物的发动机B.研制能减少污染的汽油C.研究治理空气污染的方法D.研究汽车尾气的处理方式没一个对的, 下列天体中,质量和体积最大的是 双星中两行星质量分别为M1,M2,距离为L,求它们的角速度 初一的英语填词根据首字母填词I don't know the meaning of the word?May I use your d( )My s( ) is new and big.My teachers are very kindHis p( )sre workers.They work in a factory 世界上第一个登上月球的航天员是哪个国家的谁? 一道有关椭圆的高中数学题椭圆左右焦点为F1,F2,椭圆上一点P使得 填词 在碳原子数为8或小于8的各烷烃同分异构体中,其一卤代烷不存在同分异构体有多少种? 会计的总体含义是什么? 如题 邻/间/对甲基苯酚 的一溴代物分别有几种及原因解释的时候麻烦清楚点 世界上第一个登上月球的航天员是( )国的( ) 会计的含义 对甲基苯酚的一溴代物有几种 三角形ABC的三边abc为等差数列,AC两点坐标是(-1.0)(1.0)求等点B的轨迹方程 双星做圆周运动的线速度与其质量成反比这句话是为什么呢?不是根据引力提供向心力,已经把质量抵消了麽? 对甲基苯酚的一溴代物为何只有两种 已知高一物理天体运动的所有的基本公式,我想得到直接成型的公式(所有的),最好可以有换算过程,比如:已知地球和月球的质量比和半径比,以及卫星在地球上发射的速度,求卫星在月 会计中的背书人是什么意思? 如何查找数学题目 1.对甲基苯酚为什么一溴取代物只有两种?2.甲基上的H不可以取代吗 为什么实际做不到 酚太活泼又怎么样 就算先发送苯环上取代 甲基就不可以吗3.羟基上的氢氧键为什么不会断? 1999年5月10日,我国成功地发射了“一箭双星”,将“风云1号”气象卫星和“实验5号”科学试验卫星送入离地面870km的轨道,已知地球半径为6400km,这两颗卫星的速度约为A.11.2km/s B.7.9km/s C.7.4km 请给我一个完整的椭圆和双曲线的准线定义,做好配图可以不死记吗?x=+-a^2/c 我需要理解 特别是双曲线不懂 对甲基苯酚的一溴代物为什么羟基上的氢不能被取代?即为何只有3种而不是4种? 火星和地球绕太阳的运动可以近似看作是同一平面的匀速圆周运动.已知火星公转轨道半径大约是地球公转轨道半径的3/2.从火星,地球与太阳于某一次处于同一直线开始计时,试估计它们再次处 查找小学数学题答案 (3)、P77-8初中化学:下列做法中符合绿色化学理念的是()?说明选择理由.“绿色化学”要求从根本上减少或杜绝污染.下列做法中符合绿色化学理念的是:A.实验室制氧气;B.实验室制CO2;C. 两颗卫星在同一轨道平面绕地球做同方向的匀速圆周运动,地球半径为R,a卫星离地面的高度等于R,周期为Ta ,b卫星离地面的高度为3R,周期为Tb,则:两卫星的周期之比Ta:Tb=();若某时刻两卫星正
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘