Как реализовать хеширование между Oracle, SQL Server и ASP.NET - PullRequest
1 голос
/ 01 февраля 2012

Мне нужно получить конфиденциальные данные с сервера Oracle на сервер SQL для использования на моем веб-сайте ASP.NET. Скажем, его пароли. Наши сотрудники службы безопасности говорят, что эти пароли должны быть защищены на каждом этапе пути. Мой сайт должен иметь возможность сравнивать пользовательский ввод с этими паролями. Эти пароли должны быть перенесены с сервера Oracle на SQL Server ночью и могут использоваться только на SQL Server в течение дня.

Лучшее решение, которое я могу придумать, заключается в том, что нам нужно хэшировать пароли в Oracle и передавать хэши в SQL Server (предположим, что соединение между ними является безопасным, потому что это не моя работа: P). Тогда мое веб-приложение ASP.NET должно иметь возможность реализовывать точно такое же хеширование при вводе пользователем, чтобы мы могли сравнить входной хеш с хешем базы данных.

Итак, мой вопрос: как я могу хэшировать что-то, используя один и тот же алгоритм / ключ / соль в Oracle и .NET? Я знаю, как использовать функции хеширования .NET, но я не уверен, что я могу использовать в Oracle, что было бы сопоставимо ... Я мог бы передать их в виде простого текста из ASP.NET в SQL Server и хэшировать их там, если это проще, но давайте назовем это «План Б».

1 Ответ

4 голосов
/ 01 февраля 2012

В вашем хранилище данных должны храниться хэшированные значения, на стороне asp.net вам необходимо реализовать функцию md5 для преобразования строк в хеш, а затем сравнить с хешированным значением в вашей базе данных.

http://docs.oracle.com/cd/B19306_01/appdev.102/b14258/d_obtool.htm#i1003449

Oracle имеет возможность использовать хеш-код MD5, который вы можете передать на сервер SQL и реализовать, а также ASP.net.

SQL Server md5

http://www.lazerwire.com/2011/10/ms-sql-md5-hash.html

ASP.net MD5

public string CalculateMD5Hash(string input)
{
    // step 1, calculate MD5 hash from input
    MD5 md5 = System.Security.Cryptography.MD5.Create();
    byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input);
    byte[] hash = md5.ComputeHash(inputBytes);

    // step 2, convert byte array to hex string
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < hash.Length; i++)
    {
        sb.Append(hash[i].ToString("X2"));
    }
    return sb.ToString();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...