zoukankan      html  css  js  c++  java
  • JT809 加密解密算法

    平台对接标准上说“在数据包发送之前,二进制数据包与伪随机序列按字节进行异或运算。
    加密算法如下:用N模伪随机序列发生器产生伪随机字节序列。将待传输的数据与伪随机码按字节进行异或运算”
    下面代码是C语言的代码:

    Const unsigned long M1 =A;
    Const unsigned long IA1 =B;
    Const unsigned long IC1 =C;
    Void encrypt(
    unsigned long key,
    unsigned char* buffer,
    unsigned short size )
    {
    unsigned short idx = 0;
    if( key == 0 ) key = 1;
    while( idx < size )
    {
    key = IA1 * ( key % M1 ) + IC1;
    buffer[idx++] ^= (unsigned char)((key>>20)&0xFF);
    }
    }
    

      

    java代码:

     1     public static byte[] encrypt(int M1,int IA1,int IC1,int key,byte [] data) {
     2         if(data == null) return null;
     3         
     4         byte[] array = data;//使用原对象,返回原对象
     5         
     6         //byte[] array = new byte[data.length]; //数组复制 返回新的对象
     7         //System.arraycopy(data, 0, array, 0, data.length);
     8         
     9         int idx=0;
    10         if(key==0){
    11             key=1;
    12         }
    13         int mkey = M1;
    14         if (0 == mkey )
    15         {
    16             mkey = 1;
    17         }
    18         while(idx<array.length){
    19             key = IA1 * ( key % mkey ) + IC1;
    20             array[idx]^=((key>>20)&0xFF);
    21             idx++;
    22         }
    23         return array;
    24     }

    总结:

    加密代码就是解密代码。

    两次异或就可以得到原文。
    key的算法和加密用的一样即可。

  • 相关阅读:
    LeetCode Notes_#705_设计哈希集合
    LeetCode Notes_#706_设计哈希映射
    【问题记录】用坚果云同步小书匠数据库发生冲突
    Java设计模式5
    Java设计模式4
    Java设计模式3
    Java设计模式2
    Java设计模式1
    tiantian1412/NTU-HsuanTienLin-MachineLearning
    Jing--Li / book
  • 原文地址:https://www.cnblogs.com/panchanggui/p/9810453.html
Copyright © 2011-2022 走看看