
unsigned short crc_dsp(unsigned short reg, unsigned char data_crc)
//reg为crc寄存器, data_crc为将要处理的8bit数据流
{
unsigned short msb; //crc寄存器将移出的最高1bit
unsigned short data;
unsigned short gx = 0x8005, i = 0; //i为左移次数, gx为生成多项式
data = (unsigned short)data_crc;
data = data << 8;
reg = reg ^ data;
do
{
msb = reg & 0x8000;
reg = reg << 1;
if(msb == 0x8000)
{
reg = reg ^ gx;
}
i++;
}
while(i < 8);
return (reg);
}
实现方法:最简单的校验就是把原始数据和待比较数据直接进行比较,看是否完全一样这种方法是最安全最准确的。同时也是效率最低的。
应用例子:龙珠cpu在线调试工具bbugexe。它和龙珠cpu间通讯时,bbug发送一个字节cpu返回收到的字节,bbug确认是刚才发送字节后才继续发送下一个字节的。 实现方法:在数据存储和传输中,字节中额外增加一个比特位,用来检验错误。校验位可以通过数据位异或计算出来。
应用例子:单片机串口通讯有一模式就是8位数据通讯,另加第9位用于放校验值。
bcc异或校验法(block check character)
实现方法:很多基于串口的通讯都用这种既简单又相当准确的方法。它就是把所有数据都和一个指定的初始值(通常是0)异或一次,最后的结果就是校验值,通常把它附在通讯数据的最后一起发送出去。接收方收到数据后自己也计算一次异或和校验值,如果和收到的校验值一致就说明收到的数据是完整的。
校验值计算的代码类似于:
unsigned uCRC=0;//校验初始值
for(int i=0;i<DataLenth;i++) uCRC^=Data[i];
适用范围:适用于大多数要求不高的数据通讯。
应用例子:ic卡接口通讯、很多单片机系统的串口通讯都使用。 (Cyclic Redundancy Check)
实现方法:这是利用除法及余数的原理来进行错误检测的
既然你都网上找完了,那就说一下吧:
加密程序当然与解密的成对出现了,至于是不是合在一个加密程序这个软件里,就要看开发软件的人怎 想了
用程序方法加密的,都可以被无损破解
加密狗的也不例外
现最强的是烧断一条IO线的方法加密要破解就必须磨片了(破坏芯片)
加密程序的原理是多种多样,并没有统一
现在最多的认为是把程序的代码通过加密程序变成了另一个毫无意义的代码
不过这种方法不适合在单片机便用
我就试过开机要输入密码那么这个密码判断程序也可以说是加密程序
更多的交流,可加入百度群:1191071 我爱51单片机 进行交流提高
<script type="text/javascript">
function checkDate(){
var stTime = documentgetElementById("startTime")value;
var endTime = documentgetElementById("endTime")value;
//将输入的时间按照"-"分成两个数组,先将年进行比较,如果后面时间的年份比前面的年份小
if(parseInt(endTimesplit("-")[0])<parseInt(stTimesplit("-")[0])){
alert("结束时间的年份不能小于开始时间的年份。");
//这里除了提示,还可以做其它 *** 作
return;
}
if(parseInt(endTimesplit("-")[0])==parseInt(stTimesplit("-")[0]) && parseInt(endTimesplit("-")[1])<parseInt(stTimesplit("-")[1])){
alert("年份相同,结束时间的月份不能小于开始时间的月份。");
//这里除了提示,还可以做其它 *** 作
return;
}
}
</script>
以上就是关于求教C语言编写的CRC16的校验程序全部的内容,包括:求教C语言编写的CRC16的校验程序、JAVA怎么做CRC校验的程序、单片机软件加密程序是否可以进行芯片解密等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)