问题描述
我想知道 Crypto.Signature.PKCS1_v1_5
和 Crypto.Signature.pkcs1_15
之间的区别是什么?
在 documentation 中,他们使用此函数 Crypto.Signature.pkcs1_15
,但有时我看到使用了 Crypto.Signature.PKCS1_v1_5
。
有什么区别,哪个更好用?
解决方法
Crypto.Signature.pkcs1_15
是 PyCryptodome 对 RSASSA-PKCS1-v1_5 签名方案的实现。 Crypto.Signature.PKCS1_v1_5
是旧版 PyCrypto(PyCryptodome 的前身)的相应实现。 PyCryptodome 也支持 Crypto.Signature.PKCS1_v1_5
,但仅是为了向后兼容,即新的实现应该使用 Crypto.Signature.pkcs1_15
。
请注意,两个库的处理方式不同,例如Crypto.Signature.pkcs1_15.PKCS115_SigScheme#verify()
在验证失败的情况下引发 ValueError
异常,而 Crypto.Signature.PKCS1_v1_5.PKCS115_SigScheme#verify()
将验证结果返回为 True
/False
。