コード例 #1
0
        public string ValidateCrc(string qrData)
        {
            var data     = qrData.Substring(0, qrData.Length - 4);
            var crc      = new CRC.Crc(CRC.CrcStdParams.StandartParameters[CRC.CrcAlgorithms.Crc16CcittFalse]).ComputeHash(System.Text.Encoding.UTF8.GetBytes(data));
            var crcValue = crc.ToHex(true).GetLast(4);

            if (0 != StringComparer.Ordinal.Compare(crcValue, qrData.GetLast(4).ToUpperInvariant()))
            {
                throw new SecurityException(LibraryResources.InvalidCrc);
            }

            return(crcValue);
        }
コード例 #2
0
        private void btn_CRC_Click(object sender, EventArgs e)
        {
            byte[] CRC32   = new byte[4];
            string command = tb_command.Text;

            char[]   spliter         = new char[] { ' ' };
            string[] subcommand      = command.Split(spliter);
            byte[]   subcommand_byte = new byte[subcommand.Length];
            for (int i = 0; i < subcommand_byte.Length; i++)
            {
                subcommand_byte[i] = byte.Parse(subcommand[i], System.Globalization.NumberStyles.HexNumber);
            }

            CRC.Crc CRC32_X = new CRC.Crc(CRC.CrcStdParams.StandartParameters[CRC.CrcAlgorithms.Crc32Mpeg2]);
            CRC32 = CRC32_X.ComputeHash(subcommand_byte);
            tb_crc_result.Text = BitConverter.ToString(CRC32, 0, 4).Replace("-", " ");
        }