加密后的值为:"?槏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)

解决方案 »

  1.   

    强度较高的加密算法,明文经加密之后的“密文”,只能用字节流来表示。
    也就是要用 Byte类型的数组 来保存及处理。
    如果你把它当成“文本字符”处理,
    因很多内容没有对应的字符,系统在转换过程中,基本上都是用西文的问号来代替。
    这样一“转换”,内容都变了,就算是可逆加密算法的,也根本无法再解密还原。那些把可显示字符加密后还是可显示字符的,都是一些非常简单、原始的算法。
    从密码学的角度来说,完全是不堪一击的。
      

  2.   


    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 IfIf mDES Is Nothing Then Set mDES = New clsDESLet vbytePwd = StrConv(vString, vbUnicode)
    Call mDES.EncryptByte(vbytePwd, vCode)Encode = pByteToHex(vbytePwd)Exit Function
    Errorhandle:
        Encode = ""
    End FunctionPublic 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 FunctionIf 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 FunctionPrivate 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 FunctionPrivate 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
      

  3.   

    加密后的 Byte 数组密文转成十六进制字符串保存到文本。解密时,将文本再转回 Byte 数组。