急,为什么RSA解密总报"Bad key" 错误,请高手帮忙?????
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
namespace LicenseMachine
{
/// <summary>
/// Summary description for Encrypt.
/// </summary>
public class Encrypt
{
private const string FILE_NAME = "License.key";
private const string s_public_key = "Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7";
public Encrypt()
{}
/// <summary>
/// encrypt method
/// </summary>
/// <param name="Source">to encrypt</param>
/// <returns>the encypted string</returns>
private string EncrypData(string Source)
{
byte[] bytIn = ASCIIEncoding.ASCII.GetBytes(Source);
byte[] bytPulicKey = ASCIIEncoding.ASCII.GetBytes(s_public_key);
byte[] Exponent = {1,0,1};
//Create a new instance of RSACryptoServiceProvider.
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
//Create a new instance of RSAParameters.
RSAParameters RSAKeyInfo = new RSAParameters();
//Set RSAKeyInfo to the public key values.
RSAKeyInfo.Modulus = bytPulicKey;
RSAKeyInfo.Exponent = Exponent;
//Import key parameters into RSA.
RSA.ImportParameters(RSAKeyInfo);
byte[] bytOut = RSA.Encrypt(bytIn,false);
return Convert.ToBase64String(bytOut);
}
/// <summary>
/// save encrypt string to a file
/// </summary>
/// <param name="s_to_encrypt"></param>
public void SaveToFile(string s_to_encrypt)
{
FileStream fs = null;
BinaryWriter bw_writer = null;
if ( System.IO.File.Exists(System.IO.Directory.GetCurrentDirectory()+"\\license.key")== true )
{
fs = new FileStream(FILE_NAME,FileMode.Open);
bw_writer = new BinaryWriter(fs);
bw_writer.Write(EncrypData(s_to_encrypt));
}
else
{
fs = new FileStream(FILE_NAME,FileMode.CreateNew);
bw_writer = new BinaryWriter(fs);
bw_writer.Write(EncrypData(s_to_encrypt));
}
bw_writer.Close();
fs.Close();
}
public bool DecryptData(string s_comparet)
{
byte[] bytPulicKey = ASCIIEncoding.ASCII.GetBytes(s_public_key);
byte[] Exponent = {1,0,1};
byte[] byt_data;
int i_len = 0;
string s = "";
FileStream fs = null;
BinaryReader bw_reader = null;
if ( System.IO.File.Exists(System.IO.Directory.GetCurrentDirectory()+"\\license.key")== true )
{
fs = new FileStream(FILE_NAME,FileMode.Open);
bw_reader = new BinaryReader(fs);
i_len = (int)fs.Length;
byt_data = new byte[i_len];
bw_reader.Read(byt_data,0,i_len);
}
else
{
bw_reader.Close();
fs.Close();
return false;
}
bw_reader.Close();
fs.Close();
//Create a new instance of RSACryptoServiceProvider.
RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();
//Create a new instance of RSAParameters.
RSAParameters RSAKeyInfo = new RSAParameters();
//Set RSAKeyInfo to the public key values.
RSAKeyInfo.Modulus = bytPulicKey;
RSAKeyInfo.Exponent = Exponent;
//Import key parameters into RSA.
RSA.ImportParameters(RSAKeyInfo);
s = ASCIIEncoding.ASCII.GetString(RSA.Decrypt(byt_data,false));
if ( s != s_comparet )
{
return false;
}
return true;
}
}
}