窗体上有三个命令按钮,一个获得加密的短语,一个对它加密并显示,最后一个显示已经解密的短语。请教各位大师拉,急啊!!!

解决方案 »

  1.   

    Public Function Encode(ByVal S As String) As String '加密
    On Error GoTo acd
        If Len(S) = 0 Then Exit Function
        Dim Buff() As Byte
        Buff = StrConv(S, vbFromUnicode)
        Dim i As Long
        Dim j As Byte
        Dim k As Byte, m As Byte
        Dim mstr As String
        mstr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz"
        Dim outs As String
        i = UBound(Buff) + 1
        outs = Space(2 * i)
        Dim Temps As String
        For i = 0 To UBound(Buff)
            Randomize Time
            j = CByte(5 * (Math.Rnd()) + 0) '最大产生的随机数只能是5,不能再大了,再大的话,就要多用一个字节
            Buff(i) = Buff(i) Xor j
            k = Buff(i) Mod Len(mstr)
            m = Buff(i) \ Len(mstr)
            m = m * 2 ^ 3 + j
            Temps = Mid(mstr, k + 1, 1) + Mid(mstr, m + 1, 1)
            Mid(outs, 2 * i + 1, 2) = Temps
         Next
         Encode = outs
    Exit Function
    acd:
    End FunctionPublic Function Decode(ByVal S As String) As String '解密
        On Error GoTo acd
        Dim i As Long
        Dim j As Byte
        Dim k As Byte
        Dim m As Byte
        Dim mstr As String
        mstr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz"
        Dim t1 As String, t2 As String
        Dim Buff() As Byte
        Dim n As Long
        n = 0
        For i = 1 To Len(S) Step 2
            t1 = Mid(S, i, 1)
            t2 = Mid(S, i + 1, 1)
            k = InStr(1, mstr, t1) - 1
            m = InStr(1, mstr, t2) - 1
            j = m \ 2 ^ 3
            m = m - j * 2 ^ 3
            ReDim Preserve Buff(n)
            Buff(n) = j * Len(mstr) + k
            Buff(n) = Buff(n) Xor m
            n = n + 1
         Next
         Decode = StrConv(Buff, vbUnicode)
         Exit Function
    acd:
         Decode = ""
    End FunctionPrivate Sub Command1_Click()
    Text2.Text = Encode(Text1.Text)
    End SubPrivate Sub Command2_Click()
    Text3.Text = Decode(Text2.Text)
    End Sub
      

  2.   

    Encode就是加密一个字符串的函数.Decode就是将已经加密的字符串还原
      

  3.   

    你可以画一个textbox控件.将你的字符串输入到这个控件里.
      

  4.   

    显示不用TEXT框的话怎么做呢,输入可以用inputbox
      

  5.   

    Private Sub Command5_Click()
    Dim tempStr As String
    tempStr = InputBox("请输入字符:")
    Text1.Text = Encode(tempStr) '将输入的字符串加密显示在text1中
    Text2.Text = Decode(Text1.Text) '将还原的字符串显示在text2中End Sub
      

  6.   

    不用TEXT框的话该怎么做啊,我需要有3个命令按钮,一个输入,一个加密显示,一个解密显示啊,请教啊
      

  7.   

    '这样Dim Estr As String
    Dim Dstr As String
    Dim str As String
    Public Function Encode(ByVal S As String) As String '加密
    On Error GoTo acd
        If Len(S) = 0 Then Exit Function
        Dim Buff() As Byte
        Buff = StrConv(S, vbFromUnicode)
        Dim i As Long
        Dim j As Byte
        Dim k As Byte, m As Byte
        Dim mstr As String
        mstr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz"
        Dim outs As String
        i = UBound(Buff) + 1
        outs = Space(2 * i)
        Dim Temps As String
        For i = 0 To UBound(Buff)
            Randomize Time
            j = CByte(5 * (Math.Rnd()) + 0) '最大产生的随机数只能是5,不能再大了,再大的话,就要多用一个字节
            Buff(i) = Buff(i) Xor j
            k = Buff(i) Mod Len(mstr)
            m = Buff(i) \ Len(mstr)
            m = m * 2 ^ 3 + j
            Temps = Mid(mstr, k + 1, 1) + Mid(mstr, m + 1, 1)
            Mid(outs, 2 * i + 1, 2) = Temps
         Next
         Encode = outs
    Exit Function
    acd:
    End FunctionPublic Function Decode(ByVal S As String) As String '解密
        On Error GoTo acd
        Dim i As Long
        Dim j As Byte
        Dim k As Byte
        Dim m As Byte
        Dim mstr As String
        mstr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz"
        Dim t1 As String, t2 As String
        Dim Buff() As Byte
        Dim n As Long
        n = 0
        For i = 1 To Len(S) Step 2
            t1 = Mid(S, i, 1)
            t2 = Mid(S, i + 1, 1)
            k = InStr(1, mstr, t1) - 1
            m = InStr(1, mstr, t2) - 1
            j = m \ 2 ^ 3
            m = m - j * 2 ^ 3
            ReDim Preserve Buff(n)
            Buff(n) = j * Len(mstr) + k
            Buff(n) = Buff(n) Xor m
            n = n + 1
         Next
         Decode = StrConv(Buff, vbUnicode)
         Exit Function
    acd:
         Decode = ""
    End FunctionPrivate Sub Command1_Click()
    str = InputBox("请输入字符:")
    Estr = Encode(str)
    Dstr = Decode(Estr)
    End SubPrivate Sub Command2_Click()
    MsgBox "加密后的字符是: " & Estr
    End SubPrivate Sub Command3_Click()
    MsgBox "还原后的字符是: " & Dstr
    End Sub
      

  8.   

    字符串加密看似简单实用的几乎没有,主要是中文或中西文混合字符串,用XOR类的方法根本无法实现。还是仔细找一个汉字表仔细研究,注意1、“行数”中有些是空的,2、“整行”中有几处是没有汉字的。可以采取将汉字符取ASII后加上N*256的方法实现加密,解密时再减N*256,不过要注意的就是上面的两点事情,多加几个判断处理。现在网上好多类似加密方法都没考虑这两点内容,导致加密/解密无法正确还原。