Ejemplo n.º 1
0
 public JT809GlobalConfig()
 {
     EncryptOptions = new JT809EncryptOptions()
     {
         IA1 = 20000000,
         IC1 = 20000000,
         M1  = 30000000
     };
 }
Ejemplo n.º 2
0
        public byte[] Encrypt(ReadOnlySpan <byte> buffer, JT809EncryptOptions encryptOptions, uint privateKey)
        {
            byte[] data = new byte[buffer.Length];
            if (0 == privateKey)
            {
                privateKey = 1;
            }
            uint mkey = encryptOptions.M1;

            if (0 == mkey)
            {
                mkey = 1;
            }
            for (int idx = 0; idx < buffer.Length; idx++)
            {
                privateKey = encryptOptions.IA1 * (privateKey % mkey) + encryptOptions.IC1;
                byte tmp = buffer[idx];
                tmp      ^= (byte)((privateKey >> 20) & 0xFF);
                data[idx] = tmp;
            }
            return(data);
        }
Ejemplo n.º 3
0
 /// <summary>
 /// 设置加密算法选项值
 /// 不同的上下级平台之间,加密的算法是一致的,但是针对 M1, IA1, IC1 的不同。
 /// 数据先经过加密而后解密。
 /// </summary>
 /// <param name="jT809Encrypt"></param>
 /// <returns></returns>
 public JT809GlobalConfig SetEncryptOptions(JT809EncryptOptions jT809EncryptOptions)
 {
     instance.Value.Encrypt        = new JT809EncryptImpl(jT809EncryptOptions);
     instance.Value.EncryptOptions = jT809EncryptOptions;
     return(instance.Value);
 }
Ejemplo n.º 4
0
 public byte[] Decrypt(ReadOnlySpan <byte> buffer, JT809EncryptOptions encryptOptions, uint privateKey)
 {
     return(Encrypt(buffer, encryptOptions, privateKey));
 }
Ejemplo n.º 5
0
 public JT809EncryptImpl(JT809EncryptOptions jT809EncryptOptions)
 {
     this.jT809EncryptOptions = jT809EncryptOptions;
 }