vb加密解密
‘壹’ vb加解密
最简单的设置一个公共变量Code和Key,前者用于存原密码,后者用于存密钥,自定义一个加密函数trans,用于转换Code和Key并显示在text2当中,解密时判定输入的密钥与Key是否符合,如果符合就把Code显示出来。也就是说,这个加密函数只是用于加密转换时,在解密的时候,可以不用它而直接读取Code变量。代码如下:
Dim Code As String, Key As String
Private Sub Command1_Click() '这是加密过程,加密的同时把密码与密钥存入变量Code和Key中
Label2.Caption = "加密后的密码"
Code = Text1.Text
Key = Text3.Text
Text2.Text = trans(Key) & trans(Code)
End Sub
Private Sub Command2_Click() '这是解密过程
If Text3.Text <> Key Then
MsgBox "密钥错误,请重新输入"
Else
MsgBox "原密码是:" & Code
End If
End Sub
Private Function trans(s As String) As String '这是加密函数
Dim ch As String
For i = 1 To Len(s)
If Mid(s, i, 1) Like "[A-Z]" Then
ch = ch & Chr(155 - Asc(Mid(s, i, 1)))
ElseIf Mid(s, i, 1) Like "[a-z]" Then
ch = ch & Chr(219 - Asc(Mid(s, i, 1)))
Else
ch = ch & Mid(s, i, 1)
End If
Next
trans = ch
End Function
Private Sub Form_Load() '这是所有用到的控件
Label1.Caption = "密码"
Label2.Caption = "加密后的密码"
Label3.Caption = "密钥"
Command1.Caption = "加密"
Command2.Caption = "解密"
End Sub
补充:我测试没问题。Text2中是加密后的密文,解密时会先判定用户在Text3中所输入的密钥是否与Key变量中保存的密钥相同,如果相同的话才会显示原来的密码。如果出错的话,请检查一下这8个控件,3个Text,3个Label,2个Command,你可以新建一个程序,然后在窗体上放上这8个控件,都用默认属性,然后把代码复制过去,再运行一下试试。
‘贰’ VB加密和解密数字
最简单的就是移位法:就是将数字加上(或者减掉)某个定值;
比如:加密的时候加上5
那么:
0 + 5 = 5 转换成5
1 + 5 = 6 转换成6
2 + 5 = 7 转换成7
3 + 5 = 8 转换成8
4 + 5 = 9 转换成9
5 + 5 = 10 去掉十位 转换成0
6 + 5 = 11 去掉十位 转换成1
7 + 5 = 12 去掉十位 转换成2
8 + 5 = 13 去掉十位 转换成3
9 + 5 = 14 去掉十位 转换成4
那么解密的时候,就减掉5。
对于小于5的数字,要加上10以后再减5。
请看附件:
‘叁’ 用vb编一个加密解密的程序
在窗体上至少添加文件控件:Drive控件,Dir控件,File控件,以及Command控件,每次用Xor加密解密后,在文件名加上前缀X-,另外保存
其他控件你可以添加,用来装饰,比如Label,用做提示
■这已经是详细完整的程序了,窗体添加控件你自己应该会吧?添加后,把下面内容复制到代码窗口就可以了■
Private Sub Command1_Click()
Dim oldFile As String, newfile As String, theByte As Byte
If File1.FileName = "" Then MsgBox "请选择需要加密或解密的文件!": Exit Sub
oldFile = Dir1.Path & "\" & File1.FileName
newfile = Dir1.Path & "\X-" & File1.FileName
Open oldFile For Binary As #1 Len = 1
Open newfile For Binary As #2
Do
Get #1, , theByte
theByte = 7 Xor theByte
Put #2, , theByte
Loop Until EOF(1)
Close #1
Close #2
MsgBox "加密或解密后的文件存放在“" & newfile & "”中!"
File1.Refresh
End Sub
Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub
Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub
Private Sub Form_Load()
File1.Pattern = "*.txt" '只列出txt文本文件,如果要列出全部文件,改成*.*
Command1.Caption = "加密解密"
End Sub
‘肆’ 用VB实现加密解密程序。
这里只给出按钮事件的过程,加密算法(函数)你自己想办法:
设加密算法函数名为encryptxt,解密算法函数名为unencryptxt,不带参数。
加密窗口“生成密文”按钮事件:
Private sub 生成密文_Click()
Frame1.Caption = encryptxt (Text1.text)
End Sub
解密窗口“解密”按钮事件:
Private Sub 解密_Click()
Frame2.Caption = unencryptxt(Rrame1.Caption)
End Sub
‘伍’ VB加密解密
因为加密后有不可显示字符,text1中显示不出来就用?来代替。所以你解密的字符串不是你加密后的字符串。可以设个全局变量测试一下
‘陆’ VB 加密与解密的程序代码
加密:
PrivateFunction JiaMi(ByVal varPass As String) As String '参数varPass是需要加密的文本内容
Dim varJiaMi As String * 20
Dim varTmp As Double
Dim strJiaMi As String
Dim I
For I = 1 To Len(varPass)
varTmp = AscW(Mid$(varPass, I, 1))
varJiaMi = Str$(((((varTmp * 1.5) / 5.6) * 2.7) * I))
strJiaMi = strJiaMi & varJiaMi
NextI
JiaMi = strJiaMi
EndFunction
解密函数:
PrivateFunction JieMi(ByVal varPass As String) As String '参数varPass是需要解密的密文内容
Dim varReturn As String * 20
Dim varConvert As Double
Dim varFinalPass As String
Dim varKey As Integer
Dim varPasslenth As Long
varPasslenth = Len(varPass)
For I = 1 To varPasslenth / 20
varReturn = Mid(varPass, (I - 1) * 20 + 1, 20)
varConvert = Val(Trim(varReturn))
varConvert = ((((varConvert / 1.5) * 5.6) / 2.7) / I)
varFinalPass = varFinalPass & ChrW(Val(varConvert))
NextI
JieMi = varFinalPass
EndFunction
(6)vb加密解密扩展阅读:
注意事项
编写加密程序,将用户输入的一个英文句子加密为加密字符串,然后输出加密字符串。假设句子长度不超过100个字符。
根据给定的句子加密函数原型SentenceEncoding,编写函数SentenceEncoding调用给定的字符加密函数CharEncoding完成句子加密。
然后,编写主程序提示用户输入英文句子,然后调用函数SentenceEncoding对句子加密,最后输出加密后的句子。
字符加密规则为大写字母和小写字母均加密为其补码, 我们定义ASCII码值相加为’A’+’Z’即155的两个大写字母互为补码,ASCII码值相加为’a’+’z’即219的两个小写字母互为补码。
空格用@代替,句号以#代替,其它字符用句点代替。
函数原型:
void SentenceEncoding(char *soure,char *code);
功能:对待加密字符串source加密后保存加密字符串到code.
参数:char *soure,指向待加密句子的字符串指针;
char *code 指向加密字符串的字符串指针;
字符加密函数代码。
‘柒’ 用VB写个简单加密/解密程序
'图上的控件,你就照着摆上去,然后再把以下代码拷进去,就OK了
Dim lg As Integer
'加密
Private Sub Command1_Click()
Text2 = ""
Dim a(), b() As String
lg = Len(Text1)
ReDim a(lg), b(lg)
For i = 1 To lg
a(i) = Mid(Text1, i, 1)
b(i) = AscW(a(i)) Xor 4
Text2 = Text2 & ChrW(b(i))
Next
End Sub
'解密
Private Sub Command2_Click()
Text3 = ""
Dim a(), b() As String
lg = Len(Text2)
ReDim a(lg), b(lg)
For i = 1 To lg
a(i) = Mid(Text2, i, 1)
b(i) = AscW(a(i)) Xor 4
Text3 = Text3 & ChrW(b(i))
Next
End Sub
‘捌’ 使用VB做出加密,密钥和解密
下面代码稍加修改就成。
Private Sub Command1_Click()
Dim a As String
Dim b As String
a = Text3
For i = 1 To Len(a)
b = b & JiaMi(Mid(a, i, 1))
Next i
Text2 = b
a = Text2
b = ""
For i = 1 To Len(a)
b = b & JiaMi(Mid(a, i, 1))
Next i
Text1 = b
End Sub
Private Function JiaMi(a As String) As String
Dim IntAsc As Integer
IntAsc = Asc(a)
If IntAsc Mod 2 Then
IntAsc = IntAsc + 47
If IntAsc > 126 Then IntAsc = IntAsc - 47
Else
IntAsc = IntAsc - 47
If IntAsc < 33 Then IntAsc = IntAsc + 47
End If
JiaMi = Chr(IntAsc)
End Function
‘玖’ VB文本加密解密
刚好以前写过一篇文章,提取了一部分
对敏感的数据进行加密是必要的,如用户的密码的加密。在要对数据进行加密前得确定要用何种加密方式,加密分类有很多种,从可逆角度可分为可逆和不可逆,从加密算法可分为秘密密钥算法、公开密钥算法(用于加密、数据签名和密钥管理)以及单向散列函数等。md5加密是不可逆的,md5加密的具体实现又分为许多种。
加密为什么要采用不可逆?举个例子,当你输入的密码进行加密的密文被截取,那他也要把密文解密成原文,这时由于不可逆,那他要破解密码的难度就提高,除非他可以越过加密那一步直接提供密文,这样就达到安全的目的。每当我们忘记密码进行找回密码,大多数网站要求我们输入新的密码而不是直接告诉我们原来的密码,这是由于不可逆造成的,但这又不是坏处,为什么这么说?如果在找回密码时能够知道原来的密码,那么卧底就不用修改密码来监控所有人,而所有人又不知情。但并不是所有网站都采用不可逆的算法,笔者在某网站注册过用户,有一段没登录过,那网站就会给笔者一份提醒邮件,而这提醒邮件又显示着笔者的密码,这很可能是这个网站采用的不是不可逆的算法。
今天为一个网友实现了一个简易的自定义加密方式,使用的是Visual Basic 6.0。关键代码如下:
Dim decode As String, encode As String, oldString As String, newString As String
Dim i As Integer
decode = "1234567890" '加密原文对照字符,不应该出错相同的字符
encode = "eoSDriKjsd" '加密成密文的对照字符,字符个数不能少于decode,否则极易造成出错
oldString = "87232" '待加密的字符串,所有字符都必需能够在decode里找到对应位置
newString = "" '存放加密后的字符串
For i = 1 To Len(oldString)
newString = newString + Mid$(encode, Instr(decode, Mid$(oldString, i, 1)), 1)
Next i
Print "原文:"; oldString
Print "密文:"; newString
decode和encode的值可以根据需要设置,oldString可以由文框输入,如果encode里的字符俩俩不相同,那么只需调换decode和encode的值,就可以实现解密,否则加密后的密文为不可逆。
当然,在实际的应用种应增加加密的算法复杂度,让密文不至于被人轻而易举破解。更多的加密知识请参考相关文档。
希望回答对你有帮助
‘拾’ 使用VB作出加密,解密并显示密钥
'这是我以前回答别人提问时写的,添加三个文本框,一个按钮。text3文本框中输入要加密的
'文本,在text2中是加密的文本,在text1中是对加密的文本解密。加密和解密用同一个
'过程'Private Function JiaMi(a As String) As String
Private Sub Command1_Click()
Dim a As String
Dim b As String
a = Text3
For i = 1 To Len(a)
b = b & JiaMi(Mid(a, i, 1))
Next i
Text2 = b
a = Text2
b = ""
For i = 1 To Len(a)
b = b & JiaMi(Mid(a, i, 1))
Next i
Text1 = b
End Sub
Private Function JiaMi(a As String) As String
Dim IntAsc As Integer
IntAsc = Asc(a)
If IntAsc Mod 2 Then
IntAsc = IntAsc + 47
If IntAsc > 126 Then IntAsc = IntAsc - 47
Else
IntAsc = IntAsc - 47
If IntAsc < 33 Then IntAsc = IntAsc + 47
End If
JiaMi = Chr(IntAsc)
End Function