public static string RsaDecrypt(this string encryptText) { try { //first, get our bytes back from the base64 string ... var bytesCypherText = Convert.FromBase64String(encryptText); //we want to decrypt, therefore we need a csp and load our private key var pemReader = new PemReader(File.OpenText(@"privatekey.pem")); var rsaCryptoServiceProvider = new RSACryptoServiceProvider(); rsaCryptoServiceProvider.ImportParameters(pemReader.ReadPrivatekey()); //decrypt and strip pkcs#1.5 padding var bytesPlainTextData = rsaCryptoServiceProvider.Decrypt(bytesCypherText, false); //get our original plainText back... var plainTextData = Encoding.UTF8.GetString(bytesPlainTextData); return(plainTextData); } catch (Exception e) { Console.WriteLine(e); throw; } }
private void InitializeRsa() { using (RSA publicRsa = RSA.Create()) { var publicKeyXml = _settings.UseRsaFilePath ? System.IO.File.ReadAllText(_settings.RsaPublicKeyXML) : _settings.RsaPublicKeyXML; RSACryptoServiceProviderExtensions.FromXmlString(publicRsa, publicKeyXml); _issuerSigningKey = new RsaSecurityKey(publicRsa); } if (_settings.RsaPrivateKey.Empty()) { return; } using (RSA privateRsa = RSA.Create()) { if (_settings.UseRsaFilePath) { using (var streamReader = File.OpenText(_settings.RsaPrivateKey)) { var pemReader = new PemReader(streamReader); privateRsa.ImportParameters(pemReader.ReadPrivatekey()); } } else { using (var stringReader = new StringReader(_settings.RsaPrivateKey)) { var pemReader = new PemReader(stringReader); privateRsa.ImportParameters(pemReader.ReadPrivatekey()); } } var privateKey = new RsaSecurityKey(privateRsa); _signingCredentials = new SigningCredentials(privateKey, SecurityAlgorithms.RsaSha256); } }