数字签名的技术流程描述:
1、发送者使用摘要算法对发送信息产生信息摘要
2、发送者使用自己的私钥对信息摘要进行签名
3、发送者将信息本身和已签名的摘要一起发送出去
4、接收者使用相同的摘要算法对信息本身计算信息摘要
5、接收者使用发送者的公钥对签名的摘要就行验签,获得信息发送者的信息摘要
6、接收者比对自己产生的摘要与发送者产生的摘要,是否一致。如果相同则信息没有被修改过,否则就是被修改过。
PKCS#1规范规定了使用RSA算法进行签名时的摘要格式,摘要格式用ASN.1描述:
DigestInfo::=SEQUENCE{
digetstAlgorithm DigetstAlgorithm ,
digest OCTET STRING
}
PKCS#7规定了数字起那么消息的具体封装格式,封装格式使用ASN.1描述:
SignedData::=SEQUECE{
version Version,
digetstAlgorithms digetstAlgorithmIdentifiers,
contentInfo ContentInfo,
certificates[0] IMPLICIT ExtendedCertificatesAndCertificates OPTIONAL,
crls[1] IMPLICIT CertificateRevocationLists OPTIONAL,
signerInfos SignerInfos
}