求用vb实现可以对汉字和数字,字母通用的恺撒加密算法.谢谢各位大哥!
感激不尽!

解决方案 »

  1.   

    Option ExplicitFunction KaiSa(ByVal s As String, ByVal Key As Integer) As String
        Dim iLoop As Long
        KaiSa = ""
        For iLoop = 1 To Len(s)
            KaiSa = KaiSa + Chr(Asc(Mid(s, iLoop, 1)) + Key)
        Next iLoop
    End Function
    Private Sub Form_Load()
        Dim s As String
        Dim t As String
        s = "你好! Hello!"
        t = KaiSa(s, 1)       '加密
        Debug.Print t
        s = KaiSa(t, -1)      '解密
        Debug.Print s
        End
    End Sub
      

  2.   

    des加密 汉字 数字 字母都支持 不行吗
      

  3.   

    r2d4g() ( ) 信誉:100    Blog  2007-03-09 22:11:41  得分: 0  
     
     
       先谢谢秀峰大哥,但是你这个算法对于很多双字节的比如说"日"不起作用啊
    再求
      
     
    不会啊,在VB中,字符是以Unicode存放的,汉字和英文字符都是双字节的,处理起来没什么区别的。
      

  4.   

    但是我使用的 key=13,处理"日"字时无法还原啊.因为ascii码加了13就超出可以显示的范围了啊.
      

  5.   

    A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z
    B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  A
    C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  A  B
    D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  A  B  C
    E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  A  B  C  D
    F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  A  B  C  D  E
    G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  A  B  C  D  E  F
    H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  A  B  C  D  E  F  G
    I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  A  B  C  D  E  F  G  H
    J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  A  B  C  D  E  F  G  H  I
    K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  A  B  C  D  E  F  G  H  I  J
    L  M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  A  B  C  D  E  F  G  H  I  J  K
    M  N  O  P  Q  R  S  T  U  V  W  X  Y  Z  A  B  C  D  E  F  G  H  I  J  K  L
    N  O  P  Q  R  S  T  U  V  W  X  Y  Z  A  B  C  D  E  F  G  H  I  J  K  L  M
    O  P  Q  R  S  T  U  V  W  X  Y  Z  A  B  C  D  E  F  G  H  I  J  K  L  M  N
    P  Q  R  S  T  U  V  W  X  Y  Z  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O
    Q  R  S  T  U  V  W  X  Y  Z  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P
    R  S  T  U  V  W  X  Y  Z  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q
    S  T  U  V  W  X  Y  Z  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R
    T  U  V  W  X  Y  Z  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S
    U  V  W  X  Y  Z  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T
    V  W  X  Y  Z  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U
    W  X  Y  Z  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V
    X  Y  Z  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W
    Y  Z  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X
    Z  A  B  C  D  E  F  G  H  I  J  K  L  M  N  O  P  Q  R  S  T  U  V  W  X  Y恺撒密码表...
      

  6.   

    “但是我使用的 key=13,处理"日"字时无法还原啊.因为ascii码加了13就超出可以显示的范围了啊.”我测试下来没问题啊,测试代码:
    Private Sub Form_Load()
        Dim s As String
        Dim t As String
        s = "你好! Hello!123890日"
        t = KaiSa(s, 13)       '加密
        Debug.Print t
        s = KaiSa(t, -13)      '解密
        Debug.Print s
        End
    End Sub运行结果:
    酿盒.-Uryy|.>?@EF=肉
    你好! Hello!123890日
      

  7.   

    有些子还是不行啊,例如:key=5,处理"日"字时无法还原啊
      

  8.   

    错了,应该是:
    例如:key=5,处理"汽"或“国”时无法还原啊
      

  9.   

    修改一下, 改成按字节处理:Option ExplicitFunction KaiSa(ByVal s As String, ByVal Key As Integer) As String
        Dim iLoop As Long
        KaiSa = ""
        For iLoop = 1 To LenB(s)
            KaiSa = KaiSa & ChrB((AscB(MidB(s, iLoop, 1)) + Key + 256) Mod 256)
        Next iLoop
    End FunctionPrivate Sub Form_Load()
        Dim s As String
        Dim t As String
        s = "汽国! Hello!"
        t = KaiSa(s, 5)       '加密
        Debug.Print t
        s = KaiSa(t, -5)      '解密
        Debug.Print s
        End
    End Sub