Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Зашифорвать и расшифровать строку  [new]
belyakoff.nikolay
Member

Откуда:
Сообщений: 5
Добрый день!

Хотел бы узнать, как средствами SQL Server'a зашифровать строку в строку. Ну и расшифровать потом.
В SQL Server'e есть куча функций по шифрованию: EncryptByAsymKey, EncryptByPassPhrase и пр.
С ними все понятно, но эти функции возвращают varbinary, и нет никаких гарантий того, что результат корректно преобразуется в строку. Кроме того, необходимо, чтобы строка в зашифрованном виде не содержала символов с кодами 9, 10, 13, а также ","

Всем заранее спасибо.
12 фев 12, 09:12    [12076436]     Ответить | Цитировать Сообщить модератору
 Re: Зашифорвать и расшифровать строку  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6201
belyakoff.nikolay,

Преобразуйте varbinary в шестнадцатиричную строчку, делов-то:
select sys.fn_varbintohexstr(0x0D0A)

Как преобразовать обратно - см. здесь.
Можно еще сконвертить в base64 string:
declare @bin varbinary(max), @str varchar(max);
set @bin = 0x0D0A;
select @str=cast(N'' as xml).value('xs:base64Binary(xs:hexBinary(sql:variable("@bin")))', 'varchar(max)');
select @str;
select cast(N'' as xml).value('xs:base64Binary(sql:variable("@str"))', 'varbinary(max)');
12 фев 12, 09:32    [12076445]     Ответить | Цитировать Сообщить модератору
 Re: Зашифорвать и расшифровать строку  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6201
Да, забыл: в 2008-м сервере конвертация в hexadecimal string и обратно поддерживается функцией convert:
select CONVERT(varbinary(max),'0x0d0a',1)
select CONVERT(varchar(max), 0x0d0a,1)+'qqq'
12 фев 12, 10:10    [12076472]     Ответить | Цитировать Сообщить модератору
 Re: Зашифорвать и расшифровать строку  [new]
belyakoff.nikolay
Member

Откуда:
Сообщений: 5
Большое спасибо, а то уже собирался в C# писать аналог fn_varbintohexstr
13 фев 12, 13:59    [12081426]     Ответить | Цитировать Сообщить модератору
 Re: Зашифорвать и расшифровать строку  [new]
belyakoff.nikolay
Member

Откуда:
Сообщений: 5
Можно еще вопрос, а существует ли функция обратная fn_varbintohexstr ?
13 фев 12, 14:10    [12081524]     Ответить | Цитировать Сообщить модератору
 Re: Зашифорвать и расшифровать строку  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 6201
belyakoff.nikolay
Можно еще вопрос, а существует ли функция обратная fn_varbintohexstr ?

12076445
Сон Веры Павловны
Как преобразовать обратно - см. здесь.

12076472
Сон Веры Павловны
select CONVERT(varbinary(max),'0x0d0a',1)
13 фев 12, 15:24    [12082221]     Ответить | Цитировать Сообщить модератору
 Re: Зашифорвать и расшифровать строку  [new]
belyakoff.nikolay
Member

Откуда:
Сообщений: 5
Спасибо
14 фев 12, 09:58    [12086528]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить