c# - 带恢复功能的 BouncyCaSTLe RSA 概率签名方案

标签 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(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);

最佳答案

我认为Iso9796d2PssSigner Org.BouncyCastle.Crypto.Signers中的类(class)命名空间可能应该做你想做的事。您可以在 ISO9796Test.cs 的源代码中找到使用示例。

关于c# - 带恢复功能的 BouncyCaSTLe RSA 概率签名方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34741428/

相关文章:

encryption - 使用 Crypto++ 连接 Base64 字符串中的 IV 和数据?

c# - UI 层是否应该能够将 lambda 表达式传递到服务层而不是调用特定方法?

c# - imageresizer.net性能基准

security - 使用 Java 中的 Web of Trust 通过 TLS 进行加密和身份验证

c# - 使用 BouncyCaSTLe 在 C# 中验证使用 ECDSA(使用 SHA256)签名的 XMLSignature 抛出 InvalidCastException

c++ - ECDSA 签名大小太长?

c# - 防止 ASP.NET Web 表单中第一个值的 DropDown 回发

c# - 将 TCP StreamReader/StreamWriter 转换为 SSLStream

java - bouncycaSTLe 加密数据从 midlet 发送到 servlet