加密后的值為:"?槏t罀gp??Ok猷噂鶃"
我把它保存到了文本檔案中, 如何解密呢??
s = StrConv("?槏t罀gp??Ok猷噂鶃", vbFromUnicode) '這里s="",為什么呢???
s = StrConv(rlt1, vbUnicode)
d.EncryptDes_ArrToArr rlt1, data, 2
Text1.Text = StrConv(data, vbUnicode)
uj5u.com熱心網友回復:
以位元組的形式保存在變數中再轉換uj5u.com熱心網友回復:
強度較高的加密演算法,明文經加密之后的“密文”,只能用位元組流來表示。也就是要用 Byte型別的陣列 來保存及處理。
如果你把它當成“文本字符”處理,
因很多內容沒有對應的字符,系統在轉換程序中,基本上都是用西文的問號來代替。
這樣一“轉換”,內容都變了,就算是可逆加密演算法的,也根本無法再解密還原。
那些把可顯示字符加密后還是可顯示字符的,都是一些非常簡單、原始的演算法。
從密碼學的角度來說,完全是不堪一擊的。
uj5u.com熱心網友回復:
Private mDES As clsDES
Public Function Encode(ByVal vString As String, ByVal vCode As String) As String
Dim vbytePwd() As Byte
On Error GoTo Errorhandle
If vString = "" Then
Encode = ""
Exit Function
End If
If mDES Is Nothing Then Set mDES = New clsDES
Let vbytePwd = StrConv(vString, vbUnicode)
Call mDES.EncryptByte(vbytePwd, vCode)
Encode = pByteToHex(vbytePwd)
Exit Function
Errorhandle:
Encode = ""
End Function
Public Function Decode(ByVal vString As String, ByVal vCode As String) As String
Dim vbytePwd() As Byte
On Error GoTo Errorhandle
If LenB(vString) = 0 Then Exit Function
If mDES Is Nothing Then Set mDES = New clsDES
Let vbytePwd = pHexToByte(vString)
Call mDES.DecryptByte(vbytePwd, vCode)
Decode = StrConv(vbytePwd, vbFromUnicode)
Exit Function
Errorhandle:
Decode = ""
End Function
Private Function pByteToHex(ByteArr() As Byte) As String
On Error Resume Next
Dim Temps As String
Dim i As Long
For i = 0 To UBound(ByteArr)
Temps = Hex(ByteArr(i))
Temps = Right("00" & Temps, 2)
pByteToHex = pByteToHex & Temps
Next
End Function
Private Function pHexToByte(ByVal HexStr As String) As Byte()
Dim i As Long
Dim vLen As Long
Dim vArr() As Byte
If LenB(HexStr) = 0 Then Exit Function
vLen = Len(HexStr) \ 2
ReDim vArr(vLen - 1)
For i = 0 To vLen - 1
Let vArr(i) = Val("&H" & Mid$(HexStr, i * 2 + 1, 2))
Next
Let pHexToByte = vArr
End Function
uj5u.com熱心網友回復:
加密后的 Byte 陣列密文轉成十六進制字串保存到文本。解密時,將文本再轉回 Byte 陣列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/130488.html
標籤:VB基礎類
上一篇:vb匯出電子表格的時候提示“物件range的方法_worksheet失敗”
下一篇:求高手詳細解釋。。。謝謝
