c# - SQL密码解密成功但在C#密码中运行项目时无法获取解密密码
问题描述
我已经在 SQL Server 中进行了加密和解密,但是当我登录密码时没有解密。以下代码用于加密密码字段。
insert into login values('admin',ENCRYPTBYPASSPHRASE('SHA2_256','admin'))
下面的代码是为解密密码字段制作的。
select username, CONVERT(VARBINARY(50),DECRYPTBYPASSPHRASE('SHA2_256',pass))FROM LOGIN
但是当我登录时显示密码不匹配C#
下面是不起作用的 C# 代码。
namespace login_Encrypt
{ public partial class Form1 : Form { //静态字符串解密;公共 Form1() { InitializeComponent(); }
private void login_Click(object sender, EventArgs e)
{
string uid = txtuser.Text;
string pwd = txtpass.Text;
string CPass = txtpass.Text.Trim();
SqlConnection con = new SqlConnection(@"Data Source=SANJAY;Initial Catalog=prectic;Integrated Security=True");
con.Open();
SqlCommand cmd = new SqlCommand("select * from login where username='" + txtuser.Text + "' AND pass='" + txtpass.Text + "'", con);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable ds = new DataTable();
sda.Fill(ds);
if (ds.Rows.Count > 0)
{
string t = ds.Rows[0]["pass"].ToString();
string Dec = Decrypt(t.ToString(), "SHA2_256");
//string NPass = (Dec + "MD5").ToLower();
lblmess.Visible = true;
lblmess.Text = "Matched";
}
else
{
lblmess.Text = "Sanjay";
}
}
/*if (ds.Tables[0].Rows.Count > 0)
{
user = ds.Tables[0].Rows[0]["username"].ToString();
pass = ds.Tables[0].Rows[0]["pass"].ToString();
con.Close();
Decrypt(pass);
if(user==txtuser.Text && decrypted==txtpass.Text)
{
lblmess.Text="success";
}
}*/
public string Decrypt(string input, string key)
{
byte[] inputArray = Convert.FromBase64String(input);
TripleDESCryptoServiceProvider tripleDES = new TripleDESCryptoServiceProvider();
MD5CryptoServiceProvider MD5 = new MD5CryptoServiceProvider();
tripleDES.Key = MD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(key));
//tripleDES.Key = UTF8Encoding.UTF8.GetBytes(key);
tripleDES.Mode = CipherMode.ECB;
tripleDES.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = tripleDES.CreateDecryptor();
byte[] resultArray = cTransform.TransformFinalBlock(inputArray, 0, inputArray.Length);
tripleDES.Clear();
return UTF8Encoding.UTF8.GetString(resultArray);
}
}
}
有谁知道如何在运行时解密密码?请给我一个解决方案。
解决方案
推荐阅读
- ios - 在没有系统警报的情况下设置 NEHotspotConfiguration
- python - 从 Python 列表中过滤非英语关键字
- rspec - 页面同时具有可见和不可见的字段
- vb.net - 值不能为空。参数名称:objectType
- ssis - SSIS OLE DB 命令
- angular - 在 Angular 中进行测试的最佳实践是什么?
- angular - 如何使用 Angular CLI 7.0.0-RC2 正确创建库项目
- java - Java 正则表达式是否支持排序序列?
- c++ - 你能专门化 std::unique_lock
- xslt - 有条件地修改多个同名子项中的文本