1. 程式人生 > >JT809 加密解密演算法

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程式碼:

	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的演算法和加密用的一樣即可。