RSA解密出现乱码
加密的方式 录入数据库
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
string dkey = rsa.ToXmlString(false);
string ekey = rsa.ToXmlString(true);
rsa.FromXmlString(dkey);
byte[] a = System.Text.Encoding.Default.GetBytes(TextBox1.Text);
byte[] b = rsa.Encrypt(a, false);
string result;
result = Convert.ToBase64String(b);
Label1.Text = result.ToString();
Label2.Text = dkey.ToString();
Label3.Text = ekey.ToString();
SqlConnection con = new SqlConnection("server=loadhost;database=xxx;uid=xxx;pwd=xxx");
con.Open();
string stt = "insert into login (N_username,N_password,dkey,ekey) values('" + TextBox1.Text + "','" + result + "','" + dkey + "','" + ekey + "')";
SqlCommand cod = new SqlCommand(stt, con);
SqlDataAdapter dy = new SqlDataAdapter(cod);
cod.ExecuteNonQuery();
这个是读取数据库的私钥与加密后的密码
String sqlcon = ConfigurationManager.ConnectionStrings["SqlConnection"].ToString(); //调用Web.config的数据库连接
using (SqlConnection con = new SqlConnection(sqlcon))
{
con.Open();
SqlCommand cmd = con.CreateCommand();
cmd.CommandText = "select N_username,N_password,dkey,ekey from [login] where N_username = @username"; //@使用参数化
cmd.Parameters.Add("@username", SqlDbType.VarChar, 50); //防Sql注入
cmd.Parameters["@username"].Value = TextBox1.Text;
SqlDataReader da = cmd.ExecuteReader();
da.Read();
byte[] PlainTextBArray;
byte[] DypherTextBArray;
string Result;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.FromXmlString(da["ekey"].ToString());
PlainTextBArray = Convert.FromBase64String(da["N_password"].ToString());
DypherTextBArray = rsa.Decrypt(PlainTextBArray, false);
Result = new UnicodeEncoding().GetString(DypherTextBArray);
Label1.Text = Result.ToString();
}
解密后出现乱码 求大神解答