大家好,所用是vb6编码,求对二进制数组加密算法,大家有的发一份上来,谢谢.

解决方案 »

  1.   

    最简单的---数组的每一元素用Not逐位取反(1变0,0变1),解密时再Not回来,但多用异\或运算.
      

  2.   

    public function EnDeCode(bytes() as byte, byval strKey as string) as byte()
    dim lKey as long 
    dim lCount as long 
    dim i as long 
    dim bytesOut() as bytelKey = crc16(strKey) // 找一个CRC算法,把strKey转换成整型CRC值rnd -1 * (abs(lkey)) // 产生一个负数的随机种子
    lcount = ubound(bytes) redim bytesOut(lcount)
    for i = 0 to lcount
       bytesout(i) = bytes(i) xor ( (rnd() * 10000) mod &HFF)
    next
    EnDeCode = bytesOut
    end function第一次运行该函数为加密,第二次运行该函数为解密, 随手写的,没测试,原理应该没问题
      

  3.   

    数据传输中如果安全性要求比较高的话可以使用RSA加密。网上找找有这样的VB程序的。
      

  4.   


    strKey有什么要求呢?每次指定一个字符串?
      

  5.   

    bdzwj你帮偶写个crc16()吧,谢啦.
      

  6.   

    unction CRC16(pBytes() As Byte, ByVal nSize As Long) As Long
          Dim CRC16Lo As Byte, CRC16Hi As Byte      'CRC寄存器
          Dim CL As Byte, CH As Byte                '多项式码&HA001
          Dim SaveHi As Byte, SaveLo As Byte
          Dim i As Long
          Dim Flag As Integer
          CRC16Lo = &HFF
          CRC16Hi = &HFF
          CL = &H1
          CH = &HA0
          For i = nIndex To nSize
            CRC16Lo = CRC16Lo Xor pBytes(i) '每一个数据与CRC寄存器进行异或
            For Flag = 0 To 7
              SaveHi = CRC16Hi
              SaveLo = CRC16Lo
              CRC16Hi = CRC16Hi \ 2            '高位右移一位
              CRC16Lo = CRC16Lo \ 2            '低位右移一位
              If ((SaveHi And &H1) = &H1) Then '如果高位字节最后一位为1
                CRC16Lo = CRC16Lo Or &H80      '则低位字节右移后前面补1
              End If                           '否则自动补0
              If ((SaveLo And &H1) = &H1) Then '如果LSB为1,则与多项式码进行异或
                CRC16Hi = CRC16Hi Xor CH
                CRC16Lo = CRC16Lo Xor CL
              End If
            Next Flag
            
         Next i
         
          '
          ' 返回CRC
          '
          Dim ReturnData(1) As Byte
          ReturnData(0) = CRC16Hi              'CRC高位
          ReturnData(1) = CRC16Lo              'CRC低位
          CopyMemory ByVal VarPtr(CRC16), ByVal VarPtr(ReturnData(0)), 2
        End Function' 
    ' 获取CRC16
    dim bytesCRC() as byte
    bytesCRC = strconv(strKey, vbFromUnicode)
    lkey = crc16(bytescrc, ubound(bytesCRC) + 1)
      

  7.   

    lkey = crc16(bytescrc, ubound(bytesCRC) + 1)
     提示CRC16Lo = CRC16Lo Xor pBytes(i) 越界,
    我把它修改成lkey = crc16(bytescrc, ubound(bytesCRC))就没报错了.呵呵.
      

  8.   

    非常感谢大家支持,特别是bdzwj,以后多多关照啰.结贴了.