OpenSSL / Mozilla NSS RSA如何签名和验证(PK11_Sign,PK11_Verify,PK11_VerifyRecover功能)如何工作?

时间:2011-01-21 06:26:06

标签: cryptography openssl rsa mozilla nss

我有PEM格式的RSA公钥和私钥(全部为p,q,e,n,d)。我很想知道:

  • PK11_Sign()PK11_Verify()PK11_VerifyRecover()(来自OpenSSL / Mozilla NSS库的 )如何与RSA协同工作?
  • 如何将填充应用于要签名的输入消息?

我的问题的背景是:我看到PK11_Sign()在签名期间为我的输入数据添加了一些填充。例如(给定密钥大小为162位):

my input = 31323334353036373839
padded input = 1FFFFFFFFFFFFFFFF0031323334353036373839

我想知道:

  • 这个填充方案的名称是什么,以及它如何工作的指针?
  • 上述OpenSSL功能的默认填充方案是什么?例如,如果我执行“openssl rsautl -in input.txt -inkey mykey.pem -out signed.txt”,将使用哪个填充方案?

1 个答案:

答案 0 :(得分:3)

  • PK11_Sign等使用PKCS#1 v.1.5签名,其中包括您提及的填充。

  • 填充方案是名为EMSA-PKCS1-V1_5-ENCODE的算法的一部分。我不相信它有一个名字,虽然它可能被非正式地称为“PKCS#1 v.1.5签名填充”。它在the PKCS#1 standard

  • 中定义
  • 根据the documentationopenssl rsautl的默认值是使用PKCS#1 v.1.5签名,这意味着此填充。