C# 带恢复的BouncyCastle RSA概率签名方案

C# 带恢复的BouncyCastle RSA概率签名方案,c#,bouncycastle,crypto++,C#,Bouncycastle,Crypto++,下面的代码签名消息带有恢复功能,如何使用C#BouncyCastle实现 std::vector<unsigned char> data{ 1,2,3,4,5,6 }; CryptoPP::AutoSeededRandomPool rng; CryptoPP::InvertibleRSAFunction params; params.GenerateRandomWithKeySize(rng, 2048); CryptoPP::RSA::PrivateKey privateKey

下面的代码签名消息带有恢复功能,如何使用C#BouncyCastle实现

std::vector<unsigned char> data{ 1,2,3,4,5,6 };

CryptoPP::AutoSeededRandomPool rng;
CryptoPP::InvertibleRSAFunction params;
params.GenerateRandomWithKeySize(rng, 2048);

CryptoPP::RSA::PrivateKey privateKey(params);
CryptoPP::RSA::PublicKey publicKey(params);
CryptoPP::RSASS<CryptoPP::PSSR, CryptoPP::SHA1>::Signer signer(privateKey);

CryptoPP::SecByteBlock signature(signer.MaxSignatureLength(data.size()));

unsigned long signatureLen = signer.SignMessageWithRecovery(rng, &data[0],
    data.size(), NULL, 0, signature);

std::vector<unsigned char> encrypted;
encrypted.assign(signatureLen, 0);
memcpy(&encrypted[0], signature.m_ptr, signatureLen);
std::向量数据{1,2,3,4,5,6};
CryptoPP::AutoSeedRandomPool rng;
CryptoPP::InvertibleRSAFunction参数;
参数GeneratorDomainWithKeySize(rng,2048);
CryptoPP::RSA::PrivateKey PrivateKey(参数);
CryptoPP::RSA::公钥公钥(params);
CryptoPP::RSASS::签名者签名者(私钥);
CryptoPP::SecByteBlock签名(signer.MaxSignatureLength(data.size());
unsigned long signatureLen=signer.SignMessageWithRecovery(rng,&数据[0],
data.size(),NULL,0,签名);
std::矢量加密;
加密。分配(signatureLen,0);
memcpy(&加密[0],signature.m_ptr,signatureLen);

我认为名称空间中的类可能应该执行您想要的操作。您可以在ISO9796Test.cs的源代码中找到使用示例。

请注意,此代码是关于PSS-R或带消息恢复的PSS的。评论只是为了让搜索PSS-R的人能够找到它。