PKCS的标准主要用于用户实体通过RA的证书申请、用户的证书更新过程
PKCS#1 RSA密码编译标准:定义RSA公钥算法加密和签名机制,主要用于组织PKCS#7中描述的数字签名和数字信封
PKCS#1签名:
1-对给出的被签名原数据进行Hash运算,
2-Hash结果按PKCS#1标准进行填充,
3-使用用户的私钥(pvk)对填充后的数据块做RSA运算(非对称加密),
4-得到的结果就是PKCS#1格式签名值。
注:当使用1024位的RSA算法签名时,签名结果长度为128字节(与密钥长度相同)
PKCS#1验签:
使用公钥(pbk)对签名结果作RSA公钥解密运算并去掉填充,得到H1,
对签名原数据做HASH运算,得到H2,
比较H1与H2,如果相等,验证成功。
PKCS#7 密码消息语法标准:定义了一种通用的消息语法,包括数字签名和加密等用于增强的加密机制,与PEM兼容,可以直接将加密消息转换成PEM消息
PKCS#7签名:在PKCS#1签名的基础上增加了签名者信息等内容后,进行DER编码(4部分组成:类型字段、长度字段、值字段以及结束标志)的数据结构。
1-对给出的被签名原数据进行Hash运算,
2-Hash结果按PKCS#1标准进行填充,
3-使用用户的私钥(pvk)对填充后的数据块做RSA运算(非对称加密),
4-按PKCS#7标准格式对签名进行编码,
5-生成签名结果
PKCS#7验签:
1-从签名结果(待验证签名)中提取签名者证书序列号等信息,按证书序列号获取签名者证书并验证证书的有效性。
2-从证书中提取签名者公钥(pbk),使用pbk对签名结果作RSA公钥解密并去填充,得到H1,
3-对签名原数据做HASH运算,得到H2,
4-比较H1与H2,如果相等,验证成功。
PKCS#10 证书申请标准:描述证书请求语法(一个唯一的识别名、公钥和可选的一组属性)