Solveweb
asked on
RSACryptoServiceProvider to decrypt with a public key
I can not get RSACryptoServiceProvider to work at all. Help! Can someone please tell me why when incudePrivateKeyInfo is false, the code below reports the error "Key not valid for use in specified state.", but when incudePrivateKeyInfo is true it reports "Unspecified Error". If my assumprtions are correct, the code below should be able to encrypt a string using RSA with eauther the rivcate key or the public key, but I can do neither.
Thanks
private string rsaEncrypt(string plainText, RSAParameters rsaParam)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider() ;
rsa.ImportParameters(rsaPa ram);
byte[] byteInput = (new UTF8Encoding()).GetBytes(p lainText);
byte[] byteEncrypted = rsa.Encrypt(byteInput, false);
string encyrptedText = (new UTF8Encoding()).GetString( byteEncryp ted);
return encyrptedText;
}
private string rsaDecrypt(string cipherText, RSAParameters rsaParam)
{
CspParameters CSPParam = new CspParameters();
CSPParam.Flags = CspProviderFlags.UseExisti ngKey;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(C SPParam);
rsa.ImportParameters(rsaPa ram);
byte[] byteEncryptedString = (new UTF8Encoding()).GetBytes(c ipherText) ;
byte[] byteDecryptedString = rsa.Decrypt(byteEncryptedS tring, false);
return (new UTF8Encoding()).GetString( byteDecryp tedString) ;
}
private RSAParameters rsaGenerateKey(bool includePrivate)
{
CspParameters CSPParam = new CspParameters();
CSPParam.Flags = CspProviderFlags.UseMachin eKeyStore;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(C SPParam);
RSAParameters rsaParam = rsa.ExportParameters(inclu dePrivate) ;
return rsaParam;
}
public void main()
{
string input = "encrypt me please";
bool incudePrivateKeyInfo = false;
RSAParameters rsaParam = CryptoHelper.rsaGenerateKe y(incudePr ivateKeyIn fo);
string output = CryptoHelper.rsaEncrypt(ne wBuffer, rsaParam);
}
Thanks
private string rsaEncrypt(string plainText, RSAParameters rsaParam)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider()
rsa.ImportParameters(rsaPa
byte[] byteInput = (new UTF8Encoding()).GetBytes(p
byte[] byteEncrypted = rsa.Encrypt(byteInput, false);
string encyrptedText = (new UTF8Encoding()).GetString(
return encyrptedText;
}
private string rsaDecrypt(string cipherText, RSAParameters rsaParam)
{
CspParameters CSPParam = new CspParameters();
CSPParam.Flags = CspProviderFlags.UseExisti
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(C
rsa.ImportParameters(rsaPa
byte[] byteEncryptedString = (new UTF8Encoding()).GetBytes(c
byte[] byteDecryptedString = rsa.Decrypt(byteEncryptedS
return (new UTF8Encoding()).GetString(
}
private RSAParameters rsaGenerateKey(bool includePrivate)
{
CspParameters CSPParam = new CspParameters();
CSPParam.Flags = CspProviderFlags.UseMachin
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(C
RSAParameters rsaParam = rsa.ExportParameters(inclu
return rsaParam;
}
public void main()
{
string input = "encrypt me please";
bool incudePrivateKeyInfo = false;
RSAParameters rsaParam = CryptoHelper.rsaGenerateKe
string output = CryptoHelper.rsaEncrypt(ne
}
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.