我有以下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();
}
答案 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 code。 RsaDigestSigner
创建Pkcs1Encoding
的实例,没有任何条件或配置:
private readonly IAsymmetricBlockCipher rsaEngine = new Pkcs1Encoding(new RsaBlindedEngine());
您还可以在debug下检查已使用的实现:
回答这个问题:
可以告诉我如何在这个过程中应用Pkcs1填充吗?
不应采取其他措施。 Pkcs1是唯一可能用于RSA-SHA512签名的填充算法。