批处理的执行器cmd.exe不能读取文件二进制数据,在此基础上的加解密工作不能简单实现
可以通过第三方工具而达到目的
例如用C++编写命令行程序
异或校验算法(又称为BCC校验)
下面就是异或校验的算法,多用于串口通信:
#include "stdio.h"
void main()
{
int i
//任意10个数值,也可以不是8位
unsigned char data[10]={0x12,0x21,0x1A,0xB1,0xC1,0xEB,0xDF,0xCA,0xF6,0xDD}
unsigned char out//用于保存异或结果
out=0x00
for (i=0i<sizeof(data)i++)
{
out^=data
}
printf("原来的校验值:%X\n",out)
out^=(data[0]^0xee)//将data[0]改为新数据后计算新校验和的方法
out^=(data[5]^0x20)//将data[5]改为新数据后计算新校验和的方法
printf("修改后校验值:%X\n",out)
data[0]=0xee//采用原始的方法计算新的校验和,和前面的校验和对比是否正确
data[5]=0x20//采用原始的方法计算新的校验和,和前面的校验和对比是否正确
out=0x00
for (i=0i<10i++)
{
out^=data
}
printf("原始方法得出校验值:%X\n",out)
}
作用:
防止自己的程序被篡改。
有些可执行程序,当被改了资源时再运行会有文件已损坏的提示,这就是使用了数据校验。本例是用md5做为数据校验的算法。当然你可以使用个性化的比如des作为数字签名,那样安全性更高。
扩展资料:
最简单的检验
实现方法:最简单的校验就是把原始数据和待比较数据直接进行比较,看是否完全一样这种方法是最安全最准确的。同时也是效率最低的。
应用例子:龙珠cpu在线调试工具bbug.exe。它和龙珠cpu间通讯时,bbug发送一个字节cpu返回收到的字节,bbug确认是刚才发送字节后才继续发送下一个字节的。
奇偶校验Parity Check
实现方法:在数据存储和传输中,字节中额外增加一个比特位,用来检验错误。校验位可以通过数据位异或计算出来。
应用例子:单片机串口通讯有一模式就是8位数据通讯,另加第9位用于放校验值。
md5校验和数字签名
实现方法:主要有md5和des算法。
适用范围:数据比较大或要求比较高的场合。如md5用于大量数据、文件校验,des用于保
密数据的校验(数字签名)等等。
应用例子:文件校验、银行系统的交易数据
参考资料:百度百科-数据校验
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)