2017-02-14 15 views
0

Я хочу зашифровать и расшифровать 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 (Advanced Encryption Standard), который использует один ключ для шифрования и дешифрования. Также обратите внимание, что размер асимметричных данных ограничен меньше, чем размер ключа. – zaph

ответ

2

RSA - асимметричный алгоритм. С помощью открытого ключа вы можете зашифровать или выполнить проверку подписи. С помощью закрытого ключа вы можете расшифровать, выполнить создание подписи или создать открытый ключ.