【发布时间】:2016-10-28 15:30:27
【问题描述】:
当用户可以通过输入他们的信息登录程序时,我正在使用应用程序。密码以加密形式存储在表中。但是当我尝试使用此密码登录时,它不起作用。\
为了加密数据我使用这个存储过程
ALTER procedure [dbo].[inn]
@use varchar (50) = null,
@ins varchar (50) = null
AS
INSERT INTO [kole].[dbo].[koll]
([Userr]
,[ins])
VALUES
(@use,
((EncryptByPassPhrase('8', @ins)))
对于解密,我使用这个存储过程
ALTER procedure [dbo].[sle]
@Use varchar (50) = null,
@ins varchar (50) = null
AS
SELECT Userr,CONVERT(varchar(50),DECRYPTBYPASSPHRASE ('8',ins)) as Password
FROM [kole].[dbo].[koll]
where Userr = @Use and ins = @ins
GO
在c#中,我使用这段代码调用数据,然后登录到程序中。
private void btn_Click(object sender, RoutedEventArgs e)
{
SqlConnection conn = new SqlConnection("Server = localhost;Database = kole; Integrated Security = true");
SqlCommand cmd = new SqlCommand("sle", conn);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@Userr", txt.Text);
cmd.Parameters.AddWithValue("@ins", psw.Password);
conn.Open();
SqlDataAdapter adapt = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adapt.Fill(ds);
conn.Close();
int count = ds.Tables[0].Rows.Count;
if (count == 0)
{
MessageBox.Show("This user don't exist");
SystemSounds.Hand.Play();
txt.Text = "";
psw.Password = "";
}
else if (count == 1)
{
MessageBox.Show("Granted!");
SystemSounds.Asterisk.Play();
conn.Open();
}
如何正确解密密码,用于登录程序。谢谢
【问题讨论】:
-
除了问题:dd你考虑散列而不是加密?
-
我该怎么做,你能告诉我一个样本,因为我是新人
-
我认为这些网站几乎可以告诉您原因和方法 (crackstation.net/hashing-security.htm / codeproject.com/Articles/608860/…)。总之,最好不要找回密码,以防网站以某种方式泄露信息。
-
@Caramirel , 但是我如何使用加密密码登录,因为你说,找回密码不好
-
当用户注册时,密码会以特定方式(散列)“加密”。然后,如果用户决定登录,密码会以完全相同的方式被打乱。如果匹配,则密码正确。
标签: c# sql encryption