level 2
贴吧用户_0G23Wy2
楼主
JT/T809-2011协议中的加密/解密是同一个算法,通过密钥进行加密解密。
b)在数据包发送之前,将数据包内容与伪随机序列按字节进行异或运算;
c) 加密算法如下:用 N 模伪随机序列发生器产生伪随机字节序列。将待传输的数据与伪随
机码(应该是密钥)按字节进行异或运算;
下面是协议给出的C例子,麻烦写成满足要求的VB例子,谢谢,QQ:123414664。

Const unsigned uint32_t M1 =A;
Const unsigned uint32_t IA1 =B;
Const unsigned uint32_t IC1 =C;
Void encrypt(uint32_t key, unsigned char* buffer, uint32_t size )
{
uint32_t idx = 0;
if( 0 = = key )
{
key = 1;
}
uint32_t mkey = M1;
if (0 = = mkey )
{
mkey = 1;
}
while( idx < size )
{
key = IA1 * ( key % mkey ) + IC1;
buffer[idx++] ^= (unsigned char)((key>>20)&0xFF);
}
}
2021年08月28日 03点08分
1
b)在数据包发送之前,将数据包内容与伪随机序列按字节进行异或运算;
c) 加密算法如下:用 N 模伪随机序列发生器产生伪随机字节序列。将待传输的数据与伪随
机码(应该是密钥)按字节进行异或运算;
下面是协议给出的C例子,麻烦写成满足要求的VB例子,谢谢,QQ:123414664。

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