VB 实现字符串加密 解密

作者&投稿:星昭 (若有异议请与网页底部的电邮联系)
vb中如何对字符串进行加密和解密(有汉字的)~

源程序如下:

Public Function StringEnDeCodecn(strSource As String, MA) As String
'该函数只对中西文起到加密作用
'参数为:源文件,密码
On Error GoTo ErrEnDeCode
Dim X As Single
Dim CHARNUM As Long, RANDOMINTEGER As Integer
Dim SINGLECHAR As String * 1
Dim strTmp As String
If MA < 0 Then
MA = MA * (-1)
End If
X = Rnd(-MA)
For i = 1 To Len(strSource) Step 1 '取单字节内容
SINGLECHAR = Mid(strSource, i, 1)
CHARNUM = Asc(SINGLECHAR)
g: RANDOMINTEGER = Int(127 * Rnd)
If RANDOMINTEGER 100 Then GoTo g
CHARNUM = CHARNUM Xor RANDOMINTEGER
strTmp = strTmp & Chr(CHARNUM)
Next i
StringEnDeCodecn = strTmp
Exit Function
ErrEnDeCode:
StringEnDeCodecn = ""
MsgBox Err.Number & "\" & Err.Description
End Function

使用方法:
tmp=stringEnDecn("中华人民共和国",75)
如果要解密的话,只须键入以下语句:
tmp1=stringendecn(tmp,75)

Private Sub 加密_Click()Dim b() As Byte, i As Longb = StrConv(Text1.Text, vbFromUnicode)For i = 0 To UBound(b) b(i) = b(i) Xor 50NextText2.Text = StrConv(b, vbUnicode)End SubPrivate Sub 解密_Click()Dim b() As Byte, i As Longb = StrConv(Text2.Text, vbFromUnicode)For i = 0 To UBound(b) b(i) = b(i) Xor 50NextText1.Text = StrConv(b, vbUnicode)End Sub
把文本框转为字节数组,然后对这个字节数组进行加密或解密处理,最后再把字节数组赋值给文本框即可。
另外,你可以发现,加密和解密其实是同一个算法!这就是Xor(异或运算)的神奇之处!

'如果是将text1中每个字符的asc码值转化为16进制实现加密解密可以这样:复制粘贴下段代码

'加密数据
Private Sub Command1_Click()
Text2.Tag = "" '清空text2.tag用来存储加密后数据
Text2.Text = "" '清空text2用来显示加密后数据
For i = 1 To Len(Text1.Text) '将text1中每个字符的asc码值转化为十六进制以软回车chr(13)分隔并存储在text2.tag中
Text2.Tag = Text2.Tag & Hex(Asc(Mid(Text1.Text, i, 1))) & Chr(13) '
Next
Text2.Text = Text2.Tag '显示加密后数据
End Sub

'解密数据
Private Sub Command2_Click()
Text1.Tag = ""
Text1.Text = ""
Dim b() As String '定义数组用来存储由text1中每个字符转化来的十六进制数
b = Split(Text2.Text, Chr(13)) '以软回车符chr(13)分隔text2中文本并存储在数组b中
For i = 0 To UBound(b) '将text2中每个十六进制数转化为十进制的asc码值后转化为字符
Text1.Tag = Text1.Tag & Chr(Val("&h" & b(i)))
Next
Text1.Text = Text1.Tag '显示原始数据
End Sub

Private Sub Command1_Click()
Text2 = code(Text1)
End Sub

Private Sub Command2_Click()
Text1 = jiecode(Text2)
End Sub

Private Sub Command3_Click()
Dim chang As Single
Dim mim, inp As String
inp = InputBox("请输入所需密钥的长度:(不大于500)", "(*^__^*) 嘻嘻……")
Do While inp = "" Or Val(inp) = 0
MsgBox ("输出了非数字,请重新输入")
inp = InputBox("请输入所需密钥的长度:(不大于500)", "(*^__^*) 嘻嘻……")
Loop
For i = 1 To Len(inp)
mim = Mid(inp, i, 1)
If mim <> "0" Then
If Val(mim) = 0 Then
MsgBox ("输入了非数字")
Exit For
End If
End If
Next i
If Val(inp) > 500 Then
MsgBox "错误:密钥过长", , "警告"
End
End If
Text3.Text = ""
For i = 1 To Val(inp)
Randomize
Text3.Text = Text3.Text + Trim(Str(Int(Rnd * 9) + 1))
Next i
End Sub

Private Sub Command4_Click()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
End Sub

Private Sub Form_Load()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
End Sub

Private Sub Command1_Click()
Dim i As Integer
Text2.Text = ""
For i = 1 To Len(Text1.Text)
Text2.Text = Text2.Text & Hex(Asc(Mid(Text1.Text, i, 1)))
Next
End Sub

Private Sub Command2_Click()
Dim i As Integer
Text1.Text = ""
For i = 1 To Len(Text2.Text) Step 2
If Val("&H" & Mid(Text2.Text, i, 2)) >= &HB0 Then '判断是否是汉字!
Text1.Text = Text1.Text & Chr(Val("&H" & Mid(Text2.Text, i, 4)))
i = i + 2
Else
Text1.Text = Text1.Text & Chr(Val("&H" & Mid(Text2.Text, i, 2)))
End If
Next
End Sub

此代码可以把字母转为两位16进制,汉字转为4位16进制!有其它问题欢迎发消息给我!

What???

不懂你说什么..

加密比较常用的是异或运算,即把每个字符的ASCII码进行异或运算


汕头市13575404395: VB编写程序,实现对任意字符串的加密和解密操作.哈哈 -
戊生旨立: 可以做呀,通过ASCII码的位数改变就可以做到. 先取值ACSII码,再+4 再返回值,就成为密文了.反一下就是明文了.

汕头市13575404395: vb程序设计 加密解密字符串 -
戊生旨立: '对文本框的MultiLine=True和ScrollBars=3的设置,要在属性窗口中进行,在第一个文本框中输入回车,即可执行 Private Sub Text1_KeyPress(KeyAscii As Integer) Dim n As Integer, i As Integer, pwd As String, oByte() As Byte, temp() As String If ...

汕头市13575404395: vb中如何对字符串进行加密和解密(有汉字的) -
戊生旨立: 函数没问题, 你的调用方法有问题:Private Sub Form_Load() Dim s As String s = UserCode("1234中文") Debug.Print s '这里显示出来的就是一串? Debug.Print UserDeCode(s) '这里显示出来的是加密前的原文了 End End Sub

汕头市13575404395: VB实现英文字符串的加密/解密操作.要求:加密:把原英文字符串的每个字符ASCII码加上5输出.解密:把英文字符串变为原来的形式.
戊生旨立: function ec (byval s as string ,byval b as boolean ) as stringdim sx as string ,sout as string dim i as integer ,n as integer n=iif(b,5,-5) for i =1 to len(s) sx=mid(s,i,1) sout=sout & chr(asc(sx)+n) next ec=sout end fucntion

汕头市13575404395: Vb编程编写一个小程序,可以对输入的一段英文字符串进行加密和解密,加密算法中需要使用到学号后两位 -
戊生旨立: 以下是根据学号末2位加密、解密的VB程序: Private Sub Form_Click()x = Val(Right(Text1.Text, 2)) '取学号末2位'以下是加密s = Text2.Texts1 = sFor i = 1 To Len(s)c = Mid(s1, i, 1)Mid(s1, i, 1) = Chr(Asc(c) Xor x)Next iText3.Text = s1 '以...

汕头市13575404395: 求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)) ...

汕头市13575404395: 编写程序,实现对任意字符串的加密和解密操作 -
戊生旨立: Dim a() As String, b() As Integer, n As Integer Text2 = "" n = Len(Text1) ReDim a(n) ReDim b(n + 3) For i = 1 To n a(i) = Mid(Text1, i, 1) If (Asc(a(i)) >= 65 And Asc(a(i)) <= 90) Or (Asc(a(i)) >= 97 And Asc(a(i)) <= 122) Then b(i) = Asc(a(i)) + 3 If b(i...

汕头市13575404395: 运用VB对文字进行加密解密 -
戊生旨立: '这是我从网上找到的一段加密解密的代码,很不错,应该符合要求. '文本框的multiline属性是用来设置是否可以接受多行文本,只能在窗体上手工设置. '文本框的scrollbars属性是用来设置是否有垂直和水平滚动条的,也只能在窗体上手工设置...

汕头市13575404395: vb编程,设计一个文本加密程序.输入一个字符串,按照以下规律加密“ -
戊生旨立: '你这个需求很有意思啊,编写难度不是很大,但要考虑全面.'运行效果如上图,代码如下所示:'判断中我将大小写字母均按规则进行了转换.'原创,亲测可用,转发请说明出处.private sub command1_click() dim a, b as string a = text1.text dim...

汕头市13575404395: 求vb代码 - 编一加密和解密程序,即将输入的一行字符串中的所有字母加密,加密后还可以再进行解密. -
戊生旨立: Option Explicit'加密 Private Sub Command1_Click() Text2 = "" Dim i As Long For i = 1 To Len(Text1) Text2 = Text2 & Chr(Asc(Mid(Text1, i, 1)) - 300) Next Text1 = "" End Sub'解密 Private Sub Command2_Click() Text1 = "" Dim i As Long ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网