如何在PyCryptodome中生成固定RSA PKCS1v1.5签名?
实现Crypto/Cryptodome与cryptography一致的固定PKCS#1 v1.5签名
问题原因:Cryptodome的PKCS1_v1_5.sign()方法默认会添加随机盐(属于非标准扩展行为),而cryptography库的实现严格遵循PKCS#1 v1.5标准的确定性签名流程,因此每次签名结果固定。
要实现与cryptography一致的固定签名效果,只需在调用sign()方法时指定rand_func=None,禁用随机盐即可:
from Crypto.Hash import SHA256 from Crypto.Signature import PKCS1_v1_5 dataHash = SHA256.new(data) # 指定rand_func=None,禁用随机盐,生成确定性签名 signature = PKCS1_v1_5.new(privateKey).sign(dataHash, rand_func=None)
这样修改后,签名过程会严格按照PKCS#1 v1.5标准执行,每次签名结果固定,与cryptography库的输出完全匹配。
内容的提问来源于stack exchange,提问作者smdbh
相关产品推荐
相关产品推荐

