请说明数字签名的主要流程。
数字签名通过如下的流程进行:
1) 采用散列算法对原始报文进行运算,得到一个固定长度的数字串,称为报文摘要(Message Digest),不同的报文所得到的报文摘要各异,但对相同的报文它的报文摘要却是惟一的。在数学上保证,只要改动报文中任何一位,重新计算出的报文摘要值就会与原先的值不相符,这样就保证了报文的不可更改性。
2) 发送方用目己的私有密钥对摘要进行加密来形成数字签名。
3) 这个数字签名将作为报文的附件和报文一起发送给接收方。
4) 接收方首先对接收到的原始报文用同样的算法计算出新的报文摘要,再用发送方的公开密钥对报文附件的数字签名进行解密,比较两个报文摘要,如果值相同,接收方就能确认该数字签名是发送方的,否则就认为收到的报文是伪造的或者中途被篡改。