110,537
社区成员
发帖
与我相关
我的任务
分享
/// <summary>
/// RSA的解密函数 stirng
/// </summary>
/// <param name="privateKey">私钥</param>
/// <param name="ciphertext">密文字符串</param>
/// <returns></returns>
public static string Decrypt(string privateKey, string ciphertext)
{
return Decrypt(privateKey, Convert.FromBase64String(ciphertext));
}
/// <summary>
/// RSA的解密函数 byte
/// </summary>
/// <param name="privateKey">私钥</param>
/// <param name="cipherbytes">密文字节数组</param>
/// <returns></returns>
public static string Decrypt(string privateKey, byte[] cipherbytes)
{
using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
{
//rsa.FromXmlString(Encoding.UTF8.GetString(Convert.FromBase64String(privateKey)));
rsa.FromXmlString(privateKey);
int keySize = rsa.KeySize / 8;
byte[] buffer = new byte[keySize];
using (MemoryStream msInput = new MemoryStream(cipherbytes))
{
using (MemoryStream msOutput = new MemoryStream())
{
int readLen;
while ((readLen = msInput.Read(buffer, 0, keySize)) > 0)
{
byte[] dataToDec = new byte[readLen];
Array.Copy(buffer, 0, dataToDec, 0, readLen);
byte[] decData = rsa.Decrypt(dataToDec, false);
msOutput.Write(decData, 0, decData.Length);
}
byte[] result = msOutput.ToArray();
rsa.Clear();
return Encoding.UTF8.GetString(result);
}
}
}
}