Как преобразовать тип столбца T-SQL и данные на месте? - PullRequest
1 голос
/ 11 ноября 2011

У меня есть база данных SQL Server 2005 для веб-сайта, на котором пароли пользователей хранятся в незашифрованном виде, и я хотел бы их хешировать. Я знаю, как использовать функцию HashBytes для получения и сравнения хэшей, но я не знаю, как лучше конвертировать существующие данные столбца паролей. В настоящее время он хранится как столбец varchar(50), и я хотел бы использовать binary(20), поскольку я планирую использовать SHA-1.

Я думал о SELECT INTO временной таблице, ALTER существующем типе столбца, а затем INSERT хешированных и соленых паролях туда, где совпадают идентификаторы пользователя. Это правильный подход? Есть ли способ сделать это на месте без временной таблицы?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 11 ноября 2011

Вы можете просто сохранить двоичную информацию в виде шестнадцатеричной строки .Это имеет некоторые преимущества:

  • Позволяет легко выполнять запрос ОБНОВЛЕНИЯ на месте
  • Нет необходимости во временных таблицах
  • Нет необходимости изменять структуру таблицы (ваша задачаРезультат - строка
0 голосов
/ 11 ноября 2011

Да.

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

ALTER TABLE MyTable ADD 'BinaryPW' binary(20)

UPDATE MyTable
SET BinaryPW = MyHashFunction(VarCharPW)

UPDATE MyTable
SET VarCharPW = ''
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...