как взломать уже существующий пароль? - PullRequest
0 голосов
/ 21 сентября 2018

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

способ настройки моих столбцов выглядит примерно так:

переменная |значение

пароль |someP @ ssword

столбцы оба varchar, с длиной столбца значения 1000 (это слишком много? Я установил его так много, потому что я прочитал, что sha 512 требует много длины или чего-то еще, и увиделпримеры, использующие по крайней мере 1000, поэтому пошли с этим)

Я использую этот запрос для хеширования,

  INSERT INTO [dbo].[Table] (value)
    VALUES(HASHBYTES('SHA2_512', 'someP@ssword'))

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

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

РЕДАКТИРОВАТЬ: я должен передать пароль в этом вызове функции электронной почты для аутентификации:

Send-EMail -EmailFrom $From_Email -SendTo $To_Email -Body $Email_Body -Subject $Job_Success_Email_Subject -Username $SmtpUser -Password $SmtpPassword

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

1 Ответ

0 голосов
/ 21 сентября 2018

Похоже, вы были сбиты с толку неуместным обсуждением в комментариях выше.

Прежде всего: хешированный пароль не будет работать в вашей функции Send-EMail, так как у функции нет способа "отменить хэш"сказал пароль.Прочтите это введение в Хеширование против шифрования .

Если вы хотите защитить свой пароль и иметь возможность восстановить исходное значение, вам необходимо зашифровать его.Тема шифрования довольно обширна и выходит за рамки того, что можно написать в SO.Я предоставлю вам несколько ссылок для чтения:

http://www.manjuke.com/2018/03/data-encryption-in-sql-server-using-t.html https://docs.microsoft.com/en-us/sql/relational-databases/security/encryption/encrypt-a-column-of-data?view=sql-server-2017 https://docs.microsoft.com/en-us/sql/relational-databases/security/encryption/sql-server-and-database-encryption-keys-database-engine?view=sql-server-2017

Шифрование парольной фразой будет проще всего реализовать, но такжеслабейший, поскольку любой, кто читает код SP, найдет парольную фразу и, следовательно, сможет расшифровать данные. Обратите внимание , что сама парольная фраза может быть передана в ENCRYPTBYPASSPHRASE в качестве параметра, что позволяет вам (безопасно) хранить ее в другом месте за пределами базы данных, т. Е. Вам не нужно жестко кодировать код SP.Вам нужно будет реализовать метод хранения паролей, если вы решите пойти по этому пути.

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

Что касается хранения двоичных данных в столбце varchar - просто, вот пример:

DECLARE @BinValue VARBINARY( 500 ) = HASHBYTES('SHA2_512', 'someP@ssword')
DECLARE @StringBinValue VARCHAR( 500 ) = CONVERT( VARCHAR( 500 ), @BinValue, 1 )
SELECT @BinValue, @StringBinValue, CONVERT( VARBINARY( 500 ), @StringBinValue, 1 ) AS BackToString

Я использовал вашу исходную функцию HASHBYTES в качестве примера, но вам нужно будет изменить ее на функцию шифрования.

Надеюсь, это прояснит для вас вещи.

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