如何使用rsa c仅公钥进行加密和解密#

问题描述:

我想仅使用公钥对RSA进行加密和解密,但在解密端会出现错误。错误:“未知块类型” 你能帮忙吗?如何使用rsa c仅公钥进行加密和解密#

BigInteger rsaPubMod = new BigInteger(Base64.Decode("ALGZqqOFBDh6qULIV0hf5g+Zg5uQqTYWhrw9fzUJwWL8dW7V6kd+9kO8yD+1/f8NVmSDAWGfmVImsPNZp/8x/tF/DycPi5vfRuzHfFcT0mSgD7VW2CfuKM0Gh2WOpgXct6IMC7UsWTkPf8VBSgHobbkr+Ex5pm09mooe2KXTtXN3")); 
BigInteger rsaPubExp = new BigInteger(Base64.Decode("AQAB")); 
Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair keyPair = new AsymmetricCipherKeyPair(new RsaKeyParameters(false, rsaPubMod, rsaPubExp), new RsaKeyParameters(true, rsaPubMod,rsaPubExp)); 
RsaKeyParameters pubParameters = new RsaKeyParameters(false, rsaPubMod, rsaPubExp); 
IAsymmetricBlockCipher eng = new Pkcs1Encoding(new RsaEngine()); 
eng.Init(true, pubParameters); 
byte[] encdata = Convert.FromBase64String("test"); 
var encdataResult = eng.ProcessBlock(encdata, 0, encdata.Length); 
string result = Convert.ToBase64String(encdataResult); 
IAsymmetricBlockCipher deng = new Pkcs1Encoding(new RsaEngine()); 
deng.Init(false, pubParameters); 
byte[] decdata = Convert.FromBase64String(result); 
var dencdataResult = deng.ProcessBlock(decdata, 0, decdata.Length); 
string result2 = Encoding.UTF8.GetString(dencdataResult); 
+5

如果只有公钥的人能够对*和*解密进行加密,那么会有什么意义呢? –

+3

看来,你应该读一些关于RSA如何工作:) –

+0

也许你需要的是对称加密,如AES(高级加密标准),它使用单个密钥进行加密和解密。另请注意,不对称数据大小受限于密钥大小。 – zaph

RSA是一种不对称算法。使用公钥可以加密,或执行签名验证。使用您可以解密的私钥,执行签名创建或创建公钥。