Pkcs1填充,同时与充气城堡签署

时间:2018-04-12 11:20:23

标签: c# bouncycastle

我有以下c#Bouncy Castle代码,使用RSA / SHA512在C#中签名一些数据。可以告诉我如何在这个过程中应用Pkcs1填充吗?

using (var txtreader = new StringReader(File.ReadAllText(_certificatePath)))
{
    var keyPair = (AsymmetricCipherKeyPair)new PemReader(txtreader).ReadObject();

    var key = keyPair.Private as RsaPrivateCrtKeyParameters;
    ISigner sig = SignerUtilities.GetSigner("SHA512withRSA");
    sig.Init(true, key);

    sig.BlockUpdate(requestToSign, 0, requestToSign.Length);
    byte[] signature = sig.GenerateSignature();
}

1 个答案:

答案 0 :(得分:1)

PKCS#1实际上是用于RSA-SHA512签名的唯一填充算法。

检查RFC 4051

  

2.3.4。 RSA-SHA512

     

这意味着PKCS#1 v1.5填充算法[RFC3447]如2.3.1节所述,但带有ASN.1 BER SHA-512算法指示符前缀。

您还可以查看BouncyCastle source codeRsaDigestSigner创建Pkcs1Encoding的实例,没有任何条件或配置:

private readonly IAsymmetricBlockCipher rsaEngine = new Pkcs1Encoding(new RsaBlindedEngine());

您还可以在debug下检查已使用的实现:

enter image description here

回答这个问题:

  

可以告诉我如何在这个过程中应用Pkcs1填充吗?

不应采取其他措施。 Pkcs1是唯一可能用于RSA-SHA512签名的填充算法。