2011-06-03 232 views
0

最后我尝试使用mysql中的加密和压缩函数来获取安全密码和用户名。如何使用DES_DECRYPT()函数从mysql中获取数据?

DES_ENCRYPT函数完全适用于加密。我给我用来加密和保存在数据库中的代码。

MySqlConnection connection = new MySqlConnection(MyConString); 
       MySqlCommand command = connection.CreateCommand(); 
       command.CommandText = "insert into user (User_Id, Password, Branch, Upto_Date) values (DES_ENCRYPT('" + textBox1.Text + "'),DES_ENCRYPT('" + textBox2.Text + "'),'" + comboBox1.SelectedItem.ToString() + "','" + textBox4.Text + "') "; 
       connection.Open(); 
       command.ExecuteNonQuery(); 
       MessageBox.Show("Record Succesfully Added", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information); 
       connection.Close(); 

但我无法在DES_DECRYPT函数中检索数据。

我试"select DES_DECRYPT(User_Id),DES_DECRYPT(Password),Branch,Upto_Date from user" 代码检索但没有用。我做什么从MySQL数据表中获取数据?

My sql datable

的最后一个记录,使用DES_ENCRYPT()函数插入。

回答

1

DES_DECRYPT是解密DES_ENCRYPT ed数据的方式。

让我们坚持SQL的一部分。简单的例子:

/* generating test table */ 
CREATE TABLE `test` (
    `testField` varchar(512) DEFAULT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 

/* adding some test data to it */ 
INSERT INTO test() VALUES (DES_ENCRYPT("Hello")), (DES_ENCRYPT("World")); 

我们发现它怎么看加密...

SELECT testField FROM test; 

+-------------+ 
| testField | 
+-------------+ 
| €p!˜*D°k | 
| €ü«ü€D»Ûë | 
+-------------+ 

...和解密吧!

SELECT DES_DECRYPT(testField) FROM test; 

+-------------+ 
| testField | 
+-------------+ 
| Hello  | 
| World  | 
+-------------+ 

基本上,如果你这样解密为你所描述的,数据库应返回纯文本。

我的建议是:

  1. 尝试启动第一搞清楚了这一点SQL一边(phpMyAdmin的,SQLyog的,有大量的工具,MySQL数据库的直接工作)。
  2. 如果这是行得通的,请转到您的.NET程序来完成此操作。

另一个说明,如果您使用这种密码保护,则在您的应用程序和数据库服务器之间使用明确的密码。即使这种连接可能是SSL-“受保护”的,我建议不要这样做。为此目的使用散列算法(如SHA512)通常比较安全,只需将Hashes存储在数据库中以避免清除密码。

+0

我没有足够的时间做哈希!所以只有我切换到这个。任何方式谢谢你。 – Sagotharan 2011-06-03 09:38:12

+0

任何加密都比在数据库中存储普通密码更好! ;-) – Bjoern 2011-06-03 09:45:05

相关问题