原文是50位左右的由数字和中文组成的,希望加密后的密码是由数字和字母组成的30位左右的密码可以解密回去 。。哪位做过这样的程序,发给我一份,不胜感激!

解决方案 »

  1.   

    逐个对字符加5处理,但是提示类型不匹配。这个错在哪? Private Sub Command1_Click() 
    Dim enstr As String 
    enstr = encrypt("5", Text1.Text) 
    Text2.Text = enstr 
    End Sub Private Function encrypt(miyao As String, stext As String) As String 
    Dim i As Integer 
    Dim k As String '读取密钥 k = miyao Mod 255 '逐字节对文件进行加密 For i = 1 To Len(stext) stext = (Mid(stext, i, 1) + k) Mod 255 Next i encrypt = stext End Function
    encrypt = stext End Function
      

  2.   

    stext = (Mid(stext, i, 1) + k) Mod 255
    Mid(stext, i, 1)是字符,怎么能够 + k 呢?
      

  3.   

    修改了你的程序,看看吧,不知能否是你满意。Option ExplicitPrivate Sub Command1_Click()
    Dim enstr As String
      enstr = encrypt(5, Text1.Text)
      Text2.Text = enstr
    End SubPrivate Function encrypt(miyao As Integer, stext As String) As String
    Dim i As Integer, k As Integer, s As String
      k = miyao Mod 255 '读取密钥
      For i = 1 To Len(stext) '逐字节对文件进行加密
         s = Chr((Asc(Mid(stext, i, 1)) + k) Mod 255)
         Mid(stext, i, 1) = s
      Next i
      encrypt = stext
    End Function
      

  4.   

    VB中有两套字符系统,前面那个程序仅适合英文字符系统,下面的程序可同时满足英汉两种字符
    添加了Command2和Text3,用于将Text2中的密文解密至Text3,
    密钥仍然用5,解密时用-5Option ExplicitPrivate Sub Command1_Click()
      Text2.Text = encrypt(5, Text1.Text)
    End SubPrivate Sub Command2_Click()
      Text3.Text = encrypt(-5, Text2.Text)
    End SubPrivate Function encrypt(miyao As Integer, stext As String) As String
    Dim i As Integer, s As String
      For i = 1 To Len(stext) '逐字节对文件进行加密
         If Asc(Mid(stext, i, 1)) > 0 And Asc(Mid(stext, i, 1)) < 256 Then
              s = Chr((Asc(Mid(stext, i, 1)) + miyao) Mod 256)
         Else
              s = Chr((Asc(Mid(stext, i, 1)) + miyao) Mod 65536)
         End If
         Mid(stext, i, 1) = s
      Next i
      encrypt = stext
    End Function
      

  5.   

    楼上的加密程序有问题哦!当text1的加密原文为“我是中国人”的时候,解密就有错误,解密后成了“我是中:人”
      

  6.   

    加密时,miyao用负数,解密时miyao用正数,再试试看
      

  7.   

    国字的ASC码 = -17926利用下述循环,把附近的字符打出来看看
    For i = -17950 To -17900
      Text1.Text = Text1.Text & Chr(i)
    Next得到 “光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈?????????????????????”
    可见国字后第五个字符是空值,chr()函数返回的是 ?号。解密时,再取得 ?号前面的第五个字符就是 :号。问题出在winOS汉字系统编码表中,该表不连续,中间有很多null区段,显示时用传统ASC码的 ? 号替代null。看来,中文字符的处理还得费一点脑筋,也可能根本就无法解决。
      

  8.   

    如果是字符和數字就好辦多了,
    可以先依次轉化為ASCII 碼. 再轉化為二進制.
    再你自己黵認一個數進行異或運算, 這樣就得到了一個全新的字符串解碼時同理,