как использовать функцию DES_DECRYPT () для получения данных из mysql?

#mysql #encryption

#mysql #шифрование

Вопрос:

Наконец-то я пробую функции шифрования и сжатия в 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 datatable?.

Мой sql datable

последняя запись вставляется с помощью функции DES_ENCRYPT().

Ответ №1:

DES_DECRYPT это способ расшифровать DES_ENCRYPT отредактированные данные.

Давайте придерживаться 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) для этой цели и просто хранить хэши в вашей базе данных, чтобы вообще не использовать четкие пароли.

Комментарии:

1. у меня недостаточно времени для создания хэша!. поэтому только я переключаюсь на это. в любом случае спасибо.!.

2. Любое шифрование лучше, чем хранение простых паролей в базе данных! 😉