如何利用批处理对文件进行位异或加解密?

如何利用批处理对文件进行位异或加解密?,第1张

批处理不具备位异或加解密功能

批处理的执行器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用于保

密数据的校验(数字签名)等等。

应用例子:文件校验、银行系统的交易数据

参考资料:百度百科-数据校验


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/11531328.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存