如何对字符串进行加密解密
本人在操作数据库时,考虑到该数据库还有可能被其他软件打开,所以想能否有另外一种方式把数据库中数据进行加密呢,也
就是说,即使别人利用其他的软件打开了该数据库,看到的也是一片乱码,根本不知道数据库进而是什么内容。出于这种情况,本人利用VB中自带
RND()函数的功能编写了如下加密解密方法。
当RND()的参数(我们称它为种子)为负值时,同一种子产生同一个随机序列,同时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 < 30 Or 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)如有不妥之处,请与我联系:
[email protected]
本人在操作数据库时,考虑到该数据库还有可能被其他软件打开,所以想能否有另外一种方式把数据库中数据进行加密呢,也
就是说,即使别人利用其他的软件打开了该数据库,看到的也是一片乱码,根本不知道数据库进而是什么内容。出于这种情况,本人利用VB中自带
RND()函数的功能编写了如下加密解密方法。
当RND()的参数(我们称它为种子)为负值时,同一种子产生同一个随机序列,同时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 < 30 Or 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)如有不妥之处,请与我联系:
[email protected]
解决方案 »
- 关于INET控件的几个问题,求助各位大虾!
- VB中如何一次提交多个查询语句给ORACLE数据库执行?
- 求教:在VB中如何实现点击界面上的按钮,可以实现人工按下键盘上面的NumLock按钮的功能?
- 对combo中输入日期的控制
- 制作个刷新按钮,实现数据刷新功能的语句
- vb6如何检测显示器当前的分辨率?编程怎么调整分辨率?
- 怎样把rs查询回来的记录集显示在datagrid中?
- 怎样设置DataReport的纸张大小?
- 请帮我看看这个程序出了什么问题
- 用VB开发一个在AutoCAD中绘制图形的程序问题,很郁闷
- 如何可以使用vb在列记录的时候可以向excel一样的模式?
- 新手求救!关于存储文件的问题!
Public Function IsValidate(ByVal SRC As Long, ByVal Value As Long) As String
Dim SourceString As String
Dim NewSRC As Long
Dim i As Integer
Dim T As IntegerFor i = 0 To 30
If (SRC And 2 ^ i) = 2 ^ i Then
SourceString = SourceString + "1"
Else
SourceString = SourceString + "0"
End If
Next i
If SRC < 0 Then
SourceString = SourceString + "1"
Else
SourceString = SourceString + "0"
End If
Dim Table As String
Dim TableIndex As Integer
Table = "JSgJFKLUqRUOISDH;KSArJKLWQ;ABCDEFHIHL;KLAqSHKJAfFWIHERQOWRLQH"Dim Result As String
Dim MidWord As String
Dim MidWordValue As Byte
Dim ResultValue As ByteFor T = 1 To 1
For i = 1 To Len(SourceString)
MidWord = Mid(SourceString, i, 1)
MidWordValue = Asc(MidWord)
TableIndex = TableIndex + 1
If TableIndex > Len(Table) Then TableIndex = 1
ResultValue = Asc(Mid(Table, TableIndex, 1)) Mod MidWordValue
Result = Result + Hex(ResultValue)
Next i
SourceString = Result
Next T
Dim BitTORool As IntegerFor T = 1 To Len(CStr(SRC))
BitTORool = SRC And 2 ^ T
For i = 1 To BitTORool
SourceString = Right(SourceString, 1) + Left(SourceString, Len(SourceString) - 1)
Next i
Next TIsValidate = SourceString
End Function