假设你要发送一段消息,首先对这段消息进行hash变化(这张图用的是MD‘Message Digest Algorithm 消息摘要算法’方法,代码中用的是sha256 'Secure Hash Algorithm' 方法),以形成摘要,然后对摘要用私匙进行加密,形成数字签名。
最后将 消息+数字签名 一起发出去
接受方进行三个操作,一是对收到的数字签名进行解密,还原出摘要A,二是对收到的消息(也就是报文)进行hash变化,三是比对两个结果,如果一致就说明消息确认是某某所发,并且没有任何的篡改!
我参考了别人的代码,稍微进行了一点修改,在Spyder上运行良好:
下面是具体的Python代码实现:
# -*- coding: utf-8 -*-
"""
This is the answer to the homework of