JT809 加密解密演算法
阿新 • • 發佈:2018-11-11
平臺對接標準上說“在資料包傳送之前,二進位制資料包與偽隨機序列按位元組進行異或運算。
加密演算法如下:用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程式碼:
public static byte [] encrypt(int M1,int IA1,int IC1,int key,byte [] array) { int idx=0; if(key==0){ key=1; } int mkey = M1; if (0 == mkey ) { mkey = 1; } while(idx<array.length){ key = IA1 * ( key % mkey ) + IC1; array[idx]^=((key>>20)&0xFF); idx++; } return array; }
總結:
加密程式碼就是解密程式碼。
兩次異或就可以得到原文。
key的演算法和加密用的一樣即可。