在RSA的PKCS块编码格式中,块类型01和02的区别是什么?他们什么时候使用?
答案 0 :(得分:0)
来自https://tools.ietf.org/html/rfc2313#section-8.1(谢谢,詹姆斯):
8.1加密块格式
块类型BT,填充字符串PS和数据D应为 格式化为八位字节串EB,即加密块。
EB = 00 || BT || PS || 00 || D . (1)
块类型BT应为单个八位字节,表示结构 加密块。对于此版本的文档,它应具有 值00,01或02.对于私钥操作,块类型 应为00或01.对于公钥操作,应为02。
值得注意的是,“块类型”这个短语没有出现在PKCS#1 v2.0 RFC(https://tools.ietf.org/html/rfc2437)
中稍后我们会看到验证的一半:
9.4加密块解析
加密块EB应解析为块类型BT,a 填充字符串PS,以及根据等式(1)的数据D.
如果出现以下任何一种情况,则会出错:
- 无法解析加密块EB 毫不含糊地(参见8.1节的注释)。
- 填充字符串PS由少于八个组成 八位字节,或与块类型BT不一致。
- 解密过程是公钥操作 块类型BT不是00或01,或解密 process是私钥操作,块类型是 不是02 。
(强调我的)
使用RFC2313中的术语:
RFC 2437(PKCS#1 2.0)取代了许多这些术语,并完全摆脱了块类型的概念。对于PKCS#1签名格式化,该字节简单地被指定为01
,并且对于PKCS#1加密,该字节被指定为02
。对于OAEP(加密)或PSS(签名)填充方案,该字节不固定。