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); }
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("-", " "); }