求助!!!linux下使用PYTHON进行二进制文件的特征码比对问题

求助!!!linux下使用PYTHON进行二进制文件的特征码比对问题,第1张

你可能需要对读到的特征码进行转换,将字符串存储的16进制字节转换为真正的十六进制字节数组:

a = '3c6f626a65637420747970653d222f2f2f2f2f2f2f2f2f2f2f2f'

def _ch(c1,c2): return eval('0x%s%s'%(c1,c2))

b = map(_ch, a[::2], a[1::2])

然后再拿来比较

签字是基于非对称算法加密文件特征码的一种特殊的算法。就是用非对称算法,加密文件经过不可逆算法计算出来的哈希值,也就是特征码。

这种特征码因为是不可逆算法,你没办法简单的修改了文件后还能保持相同的特征码(当然理论上是存在的,但因为算法复杂而且整个文件都在参与计算,需要保证相同特征码而且文件还起作用几乎不可能,除非有很强的计算机性能强行去猜)。特征码很小,可以作为一种文件正确性的标识符号。

非对称算法,就是加密和解密是两个不同的算法,或者不同的数据,有两个钥匙 A 和 B 。用 A 加密的,可以用 B 解密,相反,用 B 加密的,可以用 A 解密。而且 A、B 不能互相计算出来对方,只能同时生成(当然如果计算机足够多,性能足够强势可以算出来的,不过现在的技术是全球计算机一起跑,也需要几万年)。

作用,就是你计算文件哈希值后,再用你这边的密匙解密加密后的签字数据,获得对方提供的哈希值做比对,来确定你得到的文件是不是被修改了。

你的密匙和对方加密的密匙配套,而且哈希值一致。那么就可以认定这个文件内容签字,这个文件是对方提供的,中间没有经过他人的修改,也没有发生文件的损坏。

这种被修改或者损坏后,签字还能同样的概率太低了。


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

原文地址: http://outofmemory.cn/yw/7435503.html

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

发表评论

登录后才能评论

评论列表(0条)

保存