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

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 中运行通过。
(广州 李志东)
Mozilla宣布推出Firefox OS 面临四大问题 Ruby 2系列首个稳定版 Ruby 2.0.0-P0发布 微软改进Windows Blue搜索 系统或今夏推出 移动新趋势:扁平化设计 vs. 拟物化设计(下篇) 传奇程序员:Minecraft开发者Notch大神 让沟通更便捷 ConnectYard宣布推出全新的Web API 在Hadoop上运行SQL:程序员需知晓的13种数据工具 怎样用好Eucalyptus? AWS攻势变猛,Rackspace主动降价CDN与云存储 惠普将于下季度推出低功耗的Moonshot服务器 webOS复活!LG收购webOS用于智能电视 那些因为HTML5而将消亡的产品 初窥iWatch用户界面:开创基于时间的全新体验 如何编写出拥抱变化的代码? 20个优秀的前端框架 以AWS和vCloud为标杆看四大开源平台的定位 桌面集成开发环境五年内必将“死亡”? 助影人圆梦奥斯卡 8mm相机应用其实很平庸 苹果应用审查团队叫停Cookie追踪技术 时势造英雄:中国早期O2O创业故事 iOS开发与Android开发的四大不同 “消极抵抗”AWS OpsWork?RightScale首次宣布转售并支持GCE 2012年VC都把钱投给了哪些大数据初创公司? 耐用性将成苹果iWatch最大挑战 Sphinx:首款全硬件加速HTML5游戏引擎发布 PayPal创始人Levchin又创办了一家移动支付公司Affirm Zuck、Bill Gates、Jack Dorsey上银幕激励孩子编程 十款最新开源的开发者工具/应用(组图) Django 1.5发布,Python 3开始进入主流? [爆料]英特尔:将Hadoop“固化”到Xeon中 姗姗来迟:微软终于发布Windows 7 IE10正式版 help me !!!数据库无法启动!!! java IDE 开发环境有哪些比较小而快? 我的外遇 [zz] 走漏,去内蒙古出差,回头再见兄弟门! 做三维游戏都用什么工具? 各位,等这本书有消息后,我重发贴给你们加分,请问大家关于《Delphi高级开发指南》 asp的access数据库问题!! 急切求助!!!!!!!!!!!!!!!!!!!!! 关于把数据库数据生成excel文件的问题 我对现在的女大学生完全没有兴趣! 这样的人才中国有多少 ? 谁有语音卡驱动原程序 谁用过mp3play.ocx,大侠快来救火? 请问vc程序如何打包,可以在离开vc环境也可以运行? 怎么改变默认的打印机? win2000 下运行dos程序 报直接访问硬盘错误,有无解决方案 如何获取文本文件中的内容? 数据窗口问题求急!!! 有关线程。。欢迎讨论。。。 如何让GUI程序拥有一个console窗口 哪儿有可以加载背景图片的TTrackBar下载? 急!!!!! - 可以多加分 十万火急!!局域网不能访问!!(高分) 为什么程序不能发布成可执行文件? help!出现了很奇怪的现象?为什么我的asp代码不执行 等待高手! HtmlInputFile控件的使用问题 在UNIX+ORACLE+C++环境下开发的程序员的工资问题 怎样判定有几块硬盘!!!求助高手!!!!!!! 950元出售SCJP考试劵(仅限成都市) 我想利用asp中的FileSystemObject对象把一个已存在的文件改名,改成我希望的名字? 挺简单的程序运行错,请指点! 在修改vsflex控件内数据的时,输入汉字需要每次设定输入法,有没有好的办法 急求代码大全的英文电子书,哪位有的?在线等!! 小难题 在UNIX+ORACLE+C++环境下开发的程序员的工资问题 取消地址和工具栏? 诚心请教 工具栏上加下拉组合框的问题 FFDD 2.0 系统件开发规则 有MIS或ERP选型经验的朋友请点击,斑竹请务必帮助我! 系统件快速开发解决方案 —系统转系统件方案 关于paradox的字段设置 谁有jb7的注册码?能发给我吗? 我想让一个存储过程最大执行10秒,超时退出,怎么实现? 数据库连接问题 在delphi的paradox 7 的字段设置 单网卡如何帮定双IP? 这样都有?你们给我我的可用分增加了 不用hook,能不能把其他应用程序的关闭按钮或最小化最大化按钮屏蔽掉?? 如何把float转成CString 怎么把SQL SERVER2000 数据库中的表转成.dbf格式的表!谢谢 中国地图上怎么划分南方和北方?以哪个为分界线?山西属于南方,北方? 常温下,某一元酸HA溶液中[OH-]/[H+]=1×10的负8次方.(1)由水电离出的氢离子浓度为?(2)0.1mol/LHA溶液与0.05mol/LNaOH溶液等体积混合后所得溶液2c(H+)+c(HA)=c(A-)+2c(OH-)说法正确吗?请写出做 在Na2CO3溶液中,为什么c(Na+)>c(CO32-)? 酸度0.5相当于pH值等于多少 昼夜和太阳高度如何随纬度和季节变化参见湘教版.十万火急! 碳酸钠物料守恒为什么是物料守恒:c(Na+)=2[c(CO32-)+ c(HCO3-)+ (H2CO3)] 中国南方与北方的具体划分标准是什么?安徽省宣城市是南方还是北方?我是南方还是北方人? 常温下,0.1mol·L-1某一元酸(HA)溶液中c(OH-)/c(H+)=1×10-8,下列叙述正确的是?A.该溶液中由水电离出的c(H+)=1×10-11 mol·L-1B.由pH=3的HA与pH=11的NaOH溶液等体积混合,溶液中c(Na+)>c(A—)> 怎么去漠河北极村?交通情况怎么样 什么什么无辜填词语 烧瓶中的水烧开后停止加热,水立即停止沸腾,如果把瓶塞塞紧,并将烧瓶倒置,用冷水浇瓶底,烧瓶内将会( ) 漠河-北极村漠河到北极村班车每天两趟,价格多少?时间?发车地点?到北极村看过后,怎么回来推荐个旅馆,靠近火车站、班车发车地点的谢谢 用颜色填词语什么什么分明 气候的日较差和年较差随纬度怎么变化? 《我的家在东北》这首歌表达了东北人民什么样的思想感情 梅雨天什么时候开始什么时候结束? 玫瑰是什么词 向0.1mol·L-1 Na2CO3溶液中滴加酚酞,溶液变红色.为什么啊.是要计算的吗.怎样算 谦虚的什么什么填词语 1.将一定量的某盐酸加水充分稀释,则所得溶液的PH值?2.俩种溶液混合后的PH=7,这俩种溶液的PH可能是? Na2CO3这种盐的溶液能使无色酚酞变为红色,某同学想探究是Na+还是CO32-的作用使酚酞变红,他设计的下列实验中,能证明是CO32-的作用而不是Na+作用使酚酞变红色的是( )A:向NaOH溶液中滴入酚酞 09年梅雨天气何时结束 盐酸加水稀释后PH值会小吗?会小于7吗?我们试卷上的 说明正午太阳高度随季节和纬度的变化规律 你好,你说的意思是要有木有水的对吗?那取什么名字好呢?好朋友拜托我的.我想知道详细点.非常感谢! 汽车发动机是如何工作的啊 正午太阳高度变化幅度和纬度之间的关系 982是什么意思? 汽车发动机如何工作100字以内,我们正在学内燃机,说得简要点就行 在《松花江上》中歌词多次出现”九一八“,有什么表达作用 1mol/l的盐酸溶液,稀释1000倍后的ph值如何计算?希望能有较为详细些 漠河北极村最后一次出现极光是什么时候 松花江上歌词不挨打了沦陷区人民怎样的情感和什么愿望 苏教版四年级上册语文习作6 照样子写词语,是什么然什么什么3个 寻找天气的 好句子,急用,要秋天的 ,好的 苏教版四年级上册习作六 作文让我震撼的一幕 照样子写几个词语. 说明气候的诗句 自由落体运动的物体是否发生形变请讲出理由 照样子,写词语, 汽车发动机一会就很热水管更热是怎么回事?我的车型:铃木 羚羊变速器:手动排量:1升行驶里程:15公里购买时间:2002年9月水箱的温度最先高,而且水箱的温度降低的很慢,过一小会发动机 毛细现象违反能量守恒吗?我知道百度上有答案了,不过没有我想知道的,我想知道的是,这个势能是由什么能转换来的请问,分子的动能和势能的改变或者说它们本身有宏观上的表现吗? 请问该怎么写描写夜晚景色的段落 净水器会不会把水里的矿物质过滤掉?最后喝的是蒸馏水? 电饭锅线路图我买了一个万宝电饭煲,在煲汤时指示灯突然不亮了也不加热,不只是何原因?电源线无问题.急. 照样子写词 松花江上运用了反复的修辞手法,指出其中的几句,并说出他表达了作者怎样的思想感情 深层海水的温度为什么是4度左右海水表层的变化明显,为什么到了深层,温度维持在一个相对稳定的状态 描写夜晚景色的段落 反复是这首诗歌运用的主要修辞方法,试分析下列词句的反复所表达的思想感情 (1)我的家在东北松花江上:反复是这首诗歌运用的主要修辞方法,试分析下列词句的反复所表达的思想感情( 海水底部温度为什么不是4度4度时水的密度最大,那为什么 海水底部不是4度. 描写夜晚景色的片段太少 热水变凉了是不是与水汽化吸热有关? 海水从哪里来的,我是说地球上的各个大洋的海水. 常温下,0.1mol/L某一元酸(HA)溶液中c(OH-)/c(H+)=1×10的负8次方为什么c(HA)+c(A)=0.1mol/L 为什么Na2CO3的溶液中,c(Na+)大于c(co32-)大于c(OH-)大于c(HCO3-)大于(H+)只需解释为什么c(HCO3-)大于(H+),谢谢 生物学方面考研与化学和物理多大关系? 常温下,0.1mol/L某一元酸(HA)容液中c(OH--)/c(H+)=1x10的-8次方,怎么得出c(H+)=10得-3次方mol/L?还有,pH=3的HA与pH=11的NaOH溶液等体积混合时,为什么是HA过量? 为什么Na2CO3的溶液中,c(Na+)大于c(co32-)大于c(OH-)大于c(HCO3-)
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘