static void Main(string[] args)
{
RSAParameters pub;
RSAParameters priv;
using (var rsa = new RSACryptoServiceProvider(512))
{
try
{
//参数true 生成私钥,false生成公钥
pub = rsa.ExportParameters(false);
priv = rsa.ExportParameters(true);
}
finally
{
rsa.PersistKeyInCsp = false;
}
}
string s = "创建一个RAS 非对称 公私密钥示例";
Console.WriteLine("需要加密的数据:" + s);
byte[] messagebytes = Encoding.UTF8.GetBytes(s); //需要加密的数据
RSACryptoServiceProvider oRSA1 = new RSACryptoServiceProvider();
oRSA1.ImportParameters(pub); //加密要用到公钥所以导入公钥
byte[] AOutput = oRSA1.Encrypt(messagebytes, false); //AOutput 加密以后的数据
Console.WriteLine("加密后的数据值:" + Convert.ToBase64String(AOutput));
//私钥解密
RSACryptoServiceProvider oRSA2 = new RSACryptoServiceProvider();
oRSA2.ImportParameters(priv);
byte[] AInput = oRSA2.Decrypt(AOutput, false);
string reslut = Encoding.UTF8.GetString(AInput);
Console.WriteLine("解密后比的数据:" + reslut);
Console.ReadKey();
}