不管是那天,得到系统日期,s=format(date,"yyyymmdd"),然后根据这个s值生成一个不重复的6位数字,请问该怎么弄?
例:050726 050727 050728 050729 050730
   123987 345869 343209 343988 320998
只要得到的6位数字,不管日期是多少号,不重复就行了.
谢谢.
我搞来搞去,总是有重复的.高手指点一下啊.................

解决方案 »

  1.   

    Dim a As Long
    Dim s As Date
    s = Date
    a = DateSerial(Year(s), Month(s), Day(s))
    Debug.Print Format(a, "000000")
      

  2.   

    取今天的日期,与#2000-1-1#的相差的天数,就不会重复。
    Dim dt As Date
    Dim sn As String
    dt = Date
    sn = Format(dt - #2000/01/01#, "000000")
      

  3.   

    s=format(date,"##") 是唯一的,自己凑够六位就行了
      

  4.   

    最简单的加解密方法就是xor啦。
      

  5.   

    这个,估计在这儿很难有很具体的答复了。最简单而又最麻烦的办法,就是你自己写一个映射表,将6位的日期映射到6为的字符串。要在复杂一点儿,那就是在映射函数上边下功夫了;那你只好去看密码学。不过我想,xor显然不能满足你的要求。另外,MD5也够呛,除了不可逆以外,你要是只截取其中的6位,并不能保证不会重复。
      

  6.   

    楼上的也许不明白他的目的
    我想他的目的是在他的程序需要连接服务器。所以得用动态密码来实现,
    楼主先择了日期,而没选择时间,就说明他考虑到了客户机和服务器上的时间差,也就是说他并不想知道客户机和服务器差多少秒,所以不可逆并不影响楼主想要的功能,实在想逆的话,可以用DES加密。楼上说的并不能保证不会重复, 的确,不能保证不重复,大家想想,6位数字是有限的,而要代表的日期是无穷的,所以说虽你用什么方法,都会重复
      

  7.   

    在送你一个加密函数,不同日期结果不重复、不连续Private Function strEncrypt(strSource As String, strKey As String) As String  '字符串加密函数
    Dim n, m, i, X, k, y, zn = Len(strSource)
    m = Len(strKey)
    strEncrypt = ""
    For i = 1 To n
    X = Asc(Mid(strSource, i, 1))
    k = 1 + ((i - 1) Mod m)
    y = Asc(Mid(strKey, k, 1))
    z = X Xor y
    z = 33 + z - Int(z / 95) * 95
    strEncrypt = strEncrypt + Chr(z)
    Next i
    strEncrypt = strEncrypt
    End FunctionPrivate Sub Command1_Click()
    Dim dt As Date
    Dim sn As String
    dt = Date
    sn = Format(dt - #1/1/2000#, "000000")
    sn = strEncrypt(sn, "0")
    End Sub
      

  8.   

    取硬盘序列号+CPU序列号+主板序列号中的随意组成6位用来加密不更好吗?我目前就用这个。