#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?.
последняя запись вставляется с помощью функции 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 |
-------------
В принципе, если вы расшифруете это таким образом, как вы описали, база данных должна вернуть обычный текст.
Мой совет:
- Попробуйте сначала разобраться с этим на стороне SQL (phpmyadmin, SQLyog, есть множество инструментов для непосредственной работы с базой данных MySQL).
- Если это работает, перейдите в свою .NET-программу, чтобы завершить это.
Еще одно замечание, если вы используете этот вид защиты паролем, между вашим приложением и сервером базы данных используется четкий пароль. Даже если это соединение может быть SSL-«защищенным», я бы посоветовал не делать это таким образом. Обычно безопаснее использовать хэш-алгоритмы (например, SHA512) для этой цели и просто хранить хэши в вашей базе данных, чтобы вообще не использовать четкие пароли.
Комментарии:
1. у меня недостаточно времени для создания хэша!. поэтому только я переключаюсь на это. в любом случае спасибо.!.
2. Любое шифрование лучше, чем хранение простых паролей в базе данных! 😉