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

猜你喜欢

转载自www.cnblogs.com/panchanggui/p/9810453.html
今日推荐