Cześć,
Posiadacie może implementacje RSA w C# która by korzystała z kluczy publicznych i prywatnych przechowywanych jako string? Nie potrafię znaleźć odpowiedniego przykładu wszędzie klucze generowane są za pomocą RSACryptoServiceProvider.ExportParameters. W chodzi w grę w ogóle taka opcja, że mogę jako klucz zdefiniować swój własny string? czy tylko jeśli chce go mieć w postaci stringa to muszę skorzystać z .ToXmlString(true / false)
Pozdrawiam
Edit:
Ogarnąłem to RSA, ale generując klucze za pomocą :
RSACryptoServiceProvider csp = new RSACryptoServiceProvider();
string publicKey = csp.ToXmlString(false);
string privateKey = csp.ToXmlString(true);
W C# działa to prawidłwo, ale jak zaszyfruje to w JS, to C# już nie jest w stanie odszyfrowac danych:
public static string DecryptRSA(string strToDecript)
{
if (string.IsNullOrEmpty(strToDecript))
return "";
string privateKey = null;
try
{
if (System.Configuration.ConfigurationManager.AppSettings.AllKeys.Any(k => String.Equals(k, "RSAPrivateKey", StringComparison.InvariantCultureIgnoreCase)))
{
privateKey = System.Configuration.ConfigurationManager.AppSettings["RSAPrivateKey"];
}
}
catch (Exception ex)
{
}
using (RSACryptoServiceProvider provider = new RSACryptoServiceProvider())
{
RSACryptoServiceProvider.UseMachineKeyStore = true;
provider.FromXmlString(privateKey);
byte[] bytes = provider.Decrypt(Convert.FromBase64String(strToDecript), false);
return System.Text.UnicodeEncoding.Unicode.GetString(bytes);
}
}