powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / EncryptByPassPhrase и DecryptByPassphrase
14 сообщений из 14, страница 1 из 1
EncryptByPassPhrase и DecryptByPassphrase
    #39607724
Игорь_UUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Есть данные, которые шифруются/дешифруются в БД.

И эти данные из одной СУБД переливаются в другую СУБД.
Речь идёт о MSSQL2012 и MSSQL2017

Столкнулся с проблемой, что данные, которые прошли шифрование в MSSQL2012, не могут быть дешифрованы в MSSQL2017 и наоборот.

Я так понимаю, что изменились алгоритмы в EncryptByPassPhrase и DecryptByPassphrase в MSSQL2017.

Пример шифрования и дешифрования:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
DECLARE @PassphraseEnteredByUser NVARCHAR(512) = 'MN89HFG5HBRJOmKB';

DECLARE @Text NVARCHAR(512) = '12345-6788990'

DECLARE @R NVARCHAR(512)
SET @R = (SELECT CONVERT(NVARCHAR(4000), EncryptByPassPhrase(@PassphraseEnteredByUser, @Text, 1), 1))
   
	      
DECLARE @InquiryBinary VARBINARY(900)
SET @InquiryBinary = CONVERT(VARBINARY(900), @R, 1)

SELECT CONVERT(NVARCHAR(1024) ,DecryptByPassphrase(@PassphraseEnteredByUser, @InquiryBinary, 1))



Самое интересное, в MSSQL2005 2008 2012 нет проблем, могу зашифровать например на 2012 и расшифровать данные на 2008. А вот с 2017 появилась проблема...

Есть ли способы наладить совместимость шифрования с MSSQL2017?
...
Рейтинг: 0 / 0
EncryptByPassPhrase и DecryptByPassphrase
    #39607741
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
EncryptByPassPhrase и DecryptByPassphrase
    #39607755
Игорь_UUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
felix_ffИгорь_UUS,

https://support.microsoft.com/en-sg/help/4053407/sql-server-2017-cannot-decrypt-data-encrypted-by-earlier-versions

Спасибо, похоже это моя тема...

Но я не понял как решить проблему, тут написано:

"Note This fix requires trace flag (TF) 4631 to be enabled after you install the cumulative update. This trace flag can be enabled by using the SQL Server Startup option or by using DBCC TRACEON."

Что значит включить флаг трассировки "(TF) 4631" после установки? Я так понял, нужно обновить MSSQL, моя текущая версия: 14.0.1000
...
Рейтинг: 0 / 0
EncryptByPassPhrase и DecryptByPassphrase
    #39607758
Игорь_UUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
felix_ff,

или может можно, чтоб MSSQL2017 использовал по умолчанию хэш "SHA1" вместо нового "SHA2".
т.е. имеется возможность переключить опцию, чтоб шифрование шло по "SHA1"?
...
Рейтинг: 0 / 0
EncryptByPassPhrase и DecryptByPassphrase
    #39607765
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь_UUS,

нет нельзя, для 2017 сиквела специально используется алгоритм SHA-2 потому что SHA-1 уже не считается криптостойким.
...
Рейтинг: 0 / 0
EncryptByPassPhrase и DecryptByPassphrase
    #39607769
Игорь_UUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
felix_ffИгорь_UUS,

нет нельзя, для 2017 сиквела специально используется алгоритм SHA-2 потому что SHA-1 уже не считается криптостойким.

а что есть вот это:

Resolution
This issue is fixed in the following cumulative update for SQL Server:

Cumulative Update 2 for SQL Server 2017


Я тогда не понял, что же имеется ввиду?
...
Рейтинг: 0 / 0
EncryptByPassPhrase и DecryptByPassphrase
    #39607773
Игорь_UUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
felix_ff,

Даже не вериться, был значить MSSQL2016, затем решил его обновить на 2017, а потом данные зашифрованные в таблицах уже расшифровать не можешь... Даже как то не вериться, что в майкрософт этот момент упустили
...
Рейтинг: 0 / 0
EncryptByPassPhrase и DecryptByPassphrase
    #39607787
Minamoto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь_UUSfelix_ffИгорь_UUS,

нет нельзя, для 2017 сиквела специально используется алгоритм SHA-2 потому что SHA-1 уже не считается криптостойким.

а что есть вот это:

Resolution
This issue is fixed in the following cumulative update for SQL Server:

Cumulative Update 2 for SQL Server 2017


Я тогда не понял, что же имеется ввиду?
Вам нужно поставить Cumulative Update 2 for SQL Server 2017, после чего включить указанный флаг (через DBCC TRACEON), и пересоздать ключ.
...
Рейтинг: 0 / 0
EncryptByPassPhrase и DecryptByPassphrase
    #39607819
Игорь_UUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MinamotoИгорь_UUSпропущено...


а что есть вот это:

Resolution
This issue is fixed in the following cumulative update for SQL Server:

Cumulative Update 2 for SQL Server 2017


Я тогда не понял, что же имеется ввиду?
Вам нужно поставить Cumulative Update 2 for SQL Server 2017, после чего включить указанный флаг (через DBCC TRACEON), и пересоздать ключ.

Дело в том что я не создаю никакие ключи, всё происходит в рантайме:
Код: sql
1.
2.
3.
4.
5.
6.
DECLARE @PassphraseEnteredByUser NVARCHAR(512) = 'MN89HFG5HBRJOmKB';

DECLARE @Text NVARCHAR(512) = '12345-6788990'

DECLARE @R NVARCHAR(512)
SET @R = (SELECT CONVERT(NVARCHAR(4000), EncryptByPassPhrase(@PassphraseEnteredByUser, @Text, 1), 1))


и расшифровываю так же в рантайме используя тот же ключ:
Код: sql
1.
DECLARE @PassphraseEnteredByUser NVARCHAR(512) = 'MN89HFG5HBRJOmKB';



А где взять "Cumulative Update 2 for SQL Server 2017"?
...
Рейтинг: 0 / 0
EncryptByPassPhrase и DecryptByPassphrase
    #39607824
Minamoto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь_UUSMinamotoпропущено...

Вам нужно поставить Cumulative Update 2 for SQL Server 2017, после чего включить указанный флаг (через DBCC TRACEON), и пересоздать ключ.

Дело в том что я не создаю никакие ключи, всё происходит в рантайме:
Код: sql
1.
2.
3.
4.
5.
6.
DECLARE @PassphraseEnteredByUser NVARCHAR(512) = 'MN89HFG5HBRJOmKB';

DECLARE @Text NVARCHAR(512) = '12345-6788990'

DECLARE @R NVARCHAR(512)
SET @R = (SELECT CONVERT(NVARCHAR(4000), EncryptByPassPhrase(@PassphraseEnteredByUser, @Text, 1), 1))


и расшифровываю так же в рантайме используя тот же ключ:
Код: sql
1.
DECLARE @PassphraseEnteredByUser NVARCHAR(512) = 'MN89HFG5HBRJOmKB';



А где взять "Cumulative Update 2 for SQL Server 2017"?
Тогда, по всей видимости, вам понадобится установка флага при запуске, читайте про параметры запуска с флагами.
Ссылка на CU есть в статье, которую вам привели.
...
Рейтинг: 0 / 0
EncryptByPassPhrase и DecryptByPassphrase
    #39607850
Игорь_UUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Minamoto,

В том то и дело, я понять не могу что за флаг при запуске...

что именно можно попробовать?
...
Рейтинг: 0 / 0
EncryptByPassPhrase и DecryptByPassphrase
    #39607872
Minamoto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь_UUSMinamoto,

В том то и дело, я понять не могу что за флаг при запуске...

что именно можно попробовать?
Читайте...

https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-traceon-trace-flags-transact-sql

Как включать - указано в самом конце.
...
Рейтинг: 0 / 0
EncryptByPassPhrase и DecryptByPassphrase
    #39607886
Игорь_UUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MinamotoИгорь_UUSMinamoto,

В том то и дело, я понять не могу что за флаг при запуске...

что именно можно попробовать?
Читайте...

https://docs.microsoft.com/en-us/sql/t-sql/database-console-commands/dbcc-traceon-trace-flags-transact-sql

Как включать - указано в самом конце.

я понял... ранее трассировкой не пользовался... почитал про это дело. Но, похоже обновление ещё нужно поставить, т.к. не работает. Качаю Update2. Напишу, помогло или нет...
...
Рейтинг: 0 / 0
EncryptByPassPhrase и DecryptByPassphrase
    #39608310
Игорь_UUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
После обновления и применения трассировки, всё заработало как надо!

Огромное спасибо всем, кто помог разобраться!
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / EncryptByPassPhrase и DecryptByPassphrase
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]