C# Pkcs1使用bouncy castle签名时填充

C# Pkcs1使用bouncy castle签名时填充,c#,bouncycastle,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 =

我有下面的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();
}
PKCS#1实际上是用于RSA-SHA512签名的唯一填充算法

检查:

2.3.4。RSA-SHA512

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

你也可以查一下
RsaDigestSigner
在不带任何条件或配置的情况下创建
PKCS1Encode
的实例:

private readonly IAsymmetricBlockCipher rsaEngine = new Pkcs1Encoding(new RsaBlindedEngine());
您还可以在“调试”下检查已使用的实现:

因此,回答这个问题:

能告诉我如何在这个过程中应用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();
}
不应采取其他行动。Pkcs1是唯一可能用于RSA-SHA512签名的填充算法