C# 异或校验算法

C# 的异或校验算法 直接上代码

   public partial class FormCRC : Form
    {
        public FormCRC()
        {
            InitializeComponent();
        }

        private void FormCRC_Load(object sender, EventArgs e)
        {

        }
        /// <summary>
        /// CRC异或校验
        /// </summary>
        /// <param name="cmdString">命令字符串</param>
        /// <returns></returns>
        private static string CRC(string cmdString)
        {
            try
            {
                //CRC寄存器
                int CRCCode = 0;
                //将字符串拆分成为16进制字节数据然后两位两位进行异或校验
                for (int i = 1; i < cmdString.Length / 2; i++)
                {
                    string cmdHex = cmdString.Substring(i * 2, 2);
                    if (i == 1)
                    {
                        string cmdPrvHex = cmdString.Substring((i - 1) * 2, 2);
                        CRCCode = (byte)Convert.ToInt32(cmdPrvHex, 16) ^ (byte)Convert.ToInt32(cmdHex, 16);
                    }
                    else
                    {
                        CRCCode = (byte)CRCCode ^ (byte)Convert.ToInt32(cmdHex, 16);
                    }
                }
                return Convert.ToString(CRCCode, 16).ToUpper();//返回16进制校验码
            }
            catch
            {
                throw;
            }
        }

        private void btnConvert_Click(object sender, EventArgs e)
        {
            try
            {
                txtCRCCode.Text = CRC(txtCMDString.Text.Replace(" ", ""));
            }
            catch
            {
                MessageBox.Show("校验失败,请检查字符串是否包含特殊字符");
            }
        }
    }

  执行结果:

原文地址:https://www.cnblogs.com/dearbeans/p/9716734.html

时间: 2024-08-07 15:24:07

C# 异或校验算法的相关文章

传输数据校验算法研究

 今天简单介绍一些传输数据校验的方法,就昨天整理的资料和就我的理解写的Demo做个总结!希望大家多多指教! 定义 通俗的说,就是为保证数据的完整性,用一种指定的算法对原始数据计算出的一个校验值.接收方用同样的算法计算一次校验值,如果和随数据提供的校验值一样,说明数据是完整的. 实际应用 防止自己的程序被篡改. 有些可执行程序,当被改了资源时再运行会有文件已损坏的提示,这就是使用了数据校验.本例是用md5做为数据校验的算法.当然你可以使用个性化的 比如des作为数字签名,那样安全性更高. 校验方法

校验算法专辑

由于最近一直在接触公司的通讯协议,包括基于HTTP协议.SOCKET.串口通讯协议封装的PUSH.PULL通信协议SDK. 通讯协议无可避免的需要校验,想想以前在B公司自己定制的通讯协议连校验的算法都木有,简直low到不行,如此,问题来了, 主流的通讯协议校验算法都有哪些? 于是这篇文章就应运而生了: 首先,比较常用的算法有: 一.奇偶校验: 1. 定义 根据被传输的一组二进制代码中"1"的个数是奇数或偶数来进行校验. 使用:通常专门设置一个奇偶校验位,存放代码中"1&quo

C语言中的校验算法

数据通信的校验算法核心思想:为了保证通讯数据的可靠性,通常加入校验来验证一帧数据是否有误,校验的方式有很多种,异或校验是常见的一种,你这个如2楼说的,是逐字节进行按位异或运算,结果放在最后一个字节,接收方收到数据进行同样计算,如果最后一个字节和计算结果一致,则可认为这一帧数据可信.

某公司员工卡金额校验算法破解

漏洞概要关注数(35) 关注此漏洞 缺陷编号: WooYun-2011-03701 漏洞标题: 某公司员工卡金额校验算法破解 相关厂商: 某奇怪公司 漏洞作者: insight-labs 提交时间: 2011-12-21 21:55 公开时间: 2012-02-04 21:55 漏洞类型: 成功的入侵事件 危害等级: 高 自评Rank: 20 漏洞状态: 厂商已经确认 漏洞来源: http://www.wooyun.org Tags标签: 盲目信任用户数据 加密算法设计错误 RFID安全 硬件安

校验算法

# 校验算法 ### 常见的校验算法------------------------------ LRC- BCC- CRC ### LRC------------------------------ 简介 - 纵向冗余校验(Longitudinal Redundancy Check,简称:LRC)是通信中常用的一种校验形式,也称LRC校验或纵向校验.它是一种从纵向通道上的特定比特串产生校验比特的错误检测方法.在行列格式中(如磁带),LRC经常是与VRC一起使用,这样就会为每个字符校验码.在工业

关于SQL SERVER数据页checksum校验算法整理

SQL SERVER数据页checksum校验算法 在SQL SERVER2005以上版本中,数据页默认开启checksum,标识为m_flagBits & 0x200 == True,其值m_tornBits位于页头0x3C,4字节.其算法概述如下: 读8KB 进BUF 将BUF头部 CHECKSUM的4字节值清0 uint32 checksum = 0 //初始checksumfor i in range(0,15): //每扇区的初始checksum overall = 0; for ii

校验算法之二进制反码求和

IP/ICMP/IGMP/TCP/UDP等协议的校验和算法都是相同的,算法如下: 在发送数据时,为了计算数IP据报的校验和.应该按如下步骤:    (1)把IP数据报的首部都置为0,包括校验和字段.    (2)把首部看成以16位为单位的数字组成,依次进行二进制反码求和.    (3)把得到的结果存入校验和字段中.    在接收数据时,计算数据报的校验和相对简单,按如下步骤:    (1)把首部看成以16位为单位的数字组成,依次进行二进制反码求和,包括校验和字段.    (2)检查计算出的校验和

GSM07.10协议中串口复用使用的校验算法

1 const static unsigned char __crctable[256] = 2 { 3 0x00, 0x91, 0xE3, 0x72, 0x07, 0x96, 0xE4, 0x75, 4 0x0E, 0x9F, 0xED, 0x7C, 0x09, 0x98, 0xEA, 0x7B, 5 0x1C, 0x8D, 0xFF, 0x6E, 0x1B, 0x8A, 0xF8, 0x69, 6 0x12, 0x83, 0xF1, 0x60, 0x15, 0x84, 0xF6, 0x67,

Redis rdb文件CRC64校验算法 Java实现

查看RDB文件结构,发现最后的8字节是CRC64校验算得,从文件头开始直到8字节校验码前的FF结束码(含),经过CRC64校验计算发现,貌似最后的8字节是小端模式实现的. 参考redis的crc64实现的代码,点击查看 Java代码如下: 1 package com.jadic.utils; 2 3 /** 4 * @author Jadic 5 * @created 2014-5-15 6 */ 7 public class CRC64 { 8 private static final lon