當前位置:首頁 » 密碼管理 » vb字元串加密解密

vb字元串加密解密

發布時間: 2023-02-09 22:12:48

㈠ 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對文字進行加密解密

'這是我從網上找到的一段加密解密的代碼,很不錯,應該符合要求。
'文本框的multiline屬性是用來設置是否可以接受多行文本,只能在窗體上手工設置。
'文本框的scrollbars屬性是用來設置是否有垂直和水平滾動條的,也只能在窗體上手工設置。
'keyAscii不清楚是作什麼用的。
'兩個StrConv函數用的太好了,我沒想到能處理的這么簡單。

Option Explicit
Dim key() As Byte

Sub initkey() '這里為密匙,建議定義的復雜些,我這里僅僅是個示例
ReDim key(9)
key(0) = 12
key(1) = 43
key(2) = 53
key(3) = 67
key(4) = 78
key(5) = 82
key(6) = 91
key(7) = 245
key(8) = 218
key(9) = 190
End Sub

Function Pass_Encode(ByVal s As String) As String '加密
On Error GoTo myerr
initkey
Dim buff() As Byte
buff = StrConv(s, vbFromUnicode)
Dim i As Long, j As Long
Dim k As Long
k = UBound(key) + 1
For i = 0 To UBound(buff)
j = i Mod k
buff(i) = buff(i) Xor key(j)
Next
Dim mstr As String
mstr = ""
Dim outstr As String
Dim temps As String
For i = 0 To UBound(buff)
k = buff(i) \ Len(mstr)
j = buff(i) Mod Len(mstr)
temps = Mid(mstr, j + 1, 1) + Mid(mstr, k + 1, 1)
outstr = outstr + temps
Next
Pass_Encode = outstr
Exit Function
myerr:
Pass_Encode = ""
End Function

Function Pass_Decode(ByVal s As String) As String '解密
On Error GoTo myerr
initkey
Dim i As Long, j As Long
Dim k As Long, n As Long
Dim mstr As String
mstr = ""
Dim outstr As String
Dim temps As String
If Len(s) Mod 2 = 1 Then
Pass_Decode = ""
Exit Function
End If
Dim t1 As String
Dim t2 As String
Dim buff() As Byte
Dim m As Long
m = 0
For i = 1 To Len(s) Step 2
t1 = Mid(s, i, 1)
t2 = Mid(s, i + 1, 1)
j = InStr(1, mstr, t1)
k = InStr(1, mstr, t2)
n = j - 1 + (k - 1) * Len(mstr)
ReDim Preserve buff(m)
buff(m) = n
m = m + 1
Next
k = UBound(key) + 1
For i = 0 To UBound(buff)
j = i Mod k
buff(i) = buff(i) Xor key(j)
Next
Pass_Decode = StrConv(buff, vbUnicode)
Exit Function
myerr:
Pass_Decode = ""
End Function

Private Sub Command1_Click()
Text2.Text = Pass_Encode(Text1.Text)
Text3.Text = Pass_Decode(Text2.Text)
End Sub

㈢ 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)

㈣ VB 字元串加密解密[高分]

就這樣了,大概還行
Private Function Encrypt(ByVal StrSource As String) As String '加密
Dim BLowData As Byte
Dim BHigData As Byte
Dim i As Long
Dim k As Integer
Dim StrEncrypt As String
Dim StrChar As String
Dim KeyTemp As String
Dim Key1 As Byte
For k = 1 To 30
KeyTemp = KeyTemp & CStr(Int(Rnd * (9) + 1))
Next
Key1 = CByte(Mid(KeyTemp, 11, 1) & Mid(KeyTemp, 27, 1))
For i = 1 To Len(StrSource)
StrChar = Mid(StrSource, i, 1) '從待加密字元串中取出一個字元
BLowData = AscB(MidB(StrChar, 1, 1)) Xor Key1 '取字元的低位元組和Key1進行異或運算
SHigData = AscB(MidB(StrChar, 2, 1)) '取字元的高位元組
StrEncrypt = StrEncrypt & ChrB(BLowData) & ChrB(BHigData) '將運算後的數據合成新的字元
Next i
Encrypt = KeyTemp & StrEncrypt
End FunctionPrivate Function Decrypt(ByVal StrSource As String) As String '解密
Dim BLowData As Byte
Dim BHigData As Byte
Dim i As Long
Dim k As Integer
Dim StrDecrypt As String
Dim StrChar As String
Dim KeyTemp As String
Dim Key1 As Byte
KeyTemp = Mid(StrSource, 1, 30)
Key1 = CByte(Mid(KeyTemp, 11, 1) & Mid(KeyTemp, 27, 1))
For i = 31 To Len(StrSource)
StrChar = Mid(StrSource, i, 1) '從待解密字元串中取出一個字元
BLowData = AscB(MidB(StrChar, 1, 1)) Xor Key1 '取字元的低位元組和Key1進行異或運算
BHigData = AscB(MidB(StrChar, 2, 1)) '取字元的高位元組
StrDecrypt = StrDecrypt & ChrB(BLowData) & ChrB(BHigData) '將運算後的數據合成新的字元
Next i
Decrypt = StrDecryptEnd Function
Private Sub Command2_Click()
MsgBox Decrypt(InputBox(""))
End SubPrivate Sub Command1_Click()
Text1.Text = Encrypt(InputBox(""))
End Sub

㈤ vb 加/解密字元串

Private Dict() As String

'加密函數
Private Function Encode(Txt As String) As String
Dim r As String, t As String
Dim i As Long
Dim k As Integer
Dim j As Long
Randomize Timer
For i = 1 To Len(Txt)
k = Asc(Mid(Txt, i, 1))
r = Hex(k)
r = String(4 - Len(r), "0") & r
t = ""
For j = 1 To 4
k = CDec("&h" & Mid(r, j, 1))
If k >= 14 Then
k = k + Int(Rnd() * 3) * 16
Else
k = k + Int(Rnd() * 4) * 16
End If
t = t & Dict(k)
Next j
Encode = Encode & t
Next i
End Function
'解密函數
Private Function Decode(Code As String) As String
Dim i As Long, j As Long, y As Long, l As Long
Dim k As Integer
Dim r As String, t As String
For i = 1 To Len(Code) Step 4
r = Mid(Code, i, 4)
t = ""
For j = 1 To 4
For l = 0 To UBound(Dict)
If Mid(r, j, 1) = Dict(l) Then
Exit For
End If
Next l
k = l Mod 16
t = t & Hex(k)
Next j
y = CDec("&h" & t)
If y > 32786 Then y = y - 65536
Decode = Decode & Chr(y)
Next i
End Function

Private Sub Form_Load()
'數據字典
Dict = Split("1|q|a|z|2|w|s|x|3|e|d|c|4|r|f|v|5|t|g|b|6|y|h|n|7|u|j|m|8|i|k|9|o|l|0|p|Q|W|E|R|T|Y|U|I|O|P|A|S|D|F|G|H|J|K|L|Z|X|C|V|B|N|M|", "|")
End Sub

㈥ VB 實現字元串加密 解密

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

熱點內容
我的世界國際服伺服器pvp視頻 發布:2025-08-23 05:45:03 瀏覽:833
androidviewgroup滑動 發布:2025-08-23 05:35:44 瀏覽:318
什麼是自動配置驅動 發布:2025-08-23 05:33:23 瀏覽:392
c演算法教程 發布:2025-08-23 05:17:37 瀏覽:13
查看資料庫的表的內容 發布:2025-08-23 05:12:24 瀏覽:996
bbs論壇源碼java 發布:2025-08-23 04:39:21 瀏覽:636
如斯腳本 發布:2025-08-23 04:34:52 瀏覽:593
c語言等腰三角形 發布:2025-08-23 04:31:17 瀏覽:578
氦氣壓縮 發布:2025-08-23 04:28:20 瀏覽:257
android生成隨機數 發布:2025-08-23 04:27:36 瀏覽:752