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

Откуда:
Сообщений: 4
Помогите пожалуйста!!!
Создал сертификат:

CREATE CERTIFICATE Sertificat 
   ENCRYPTION BY PASSWORD = '111'
   WITH SUBJECT = 'www', 
   EXPIRY_DATE = '21140821';
GO


Далее хочу получить зашифрованную информацию:

SELECT
 (EncryptByCert(Cert_ID('Sertificat '),N'УФК по г. Москве (Государственное учреждение - Московское отделение Фонда социального страхования Российской Федерации)'))


В результате получаю:
(Отсутствует имя столбца)
NULL

Если текст обрезать:
SELECT
 (EncryptByCert(Cert_ID('Sertificat '),N'УФК по г. Москве (Государственное учреждение - Московское )'))


То результат уже верный
(Отсутствует имя столбца)
0x9290EAC43F67BDDFF868C2DA2DB0767B313B0AFDB3ECCEBF4CEE6EE574278B3D2B436CE21C6D985D61C407CBCAFECED653A6B6C5664022279907C9CA558A55556E570A6486147ADEF347D47E41986634FAF92F5E4B98924AE4E1CA02F14F2F9DAB210D32AA86E7CEE1AEB0AD1948BEB43B375A03026A5AEE7E63F00BF6747E81

В чем может быть проблема? Почему ограничение по длине текста???
12 окт 14, 14:42    [16693236]     Ответить | Цитировать Сообщить модератору
 Re: Шифрование данных при помощи сертификата  [new]
SQL2008
Member

Откуда: Москва
Сообщений: 4539
RednasxelA, попробуйте использовать переменную
DECLARE @text nvarchar(500) = N'УФК по г. Москве (Государственное учреждение - Московское отделение Фонда социального страхования Российской Федерации)';
SELECT (EncryptByCert(Cert_ID('Sertificat '),@text))
12 окт 14, 14:55    [16693262]     Ответить | Цитировать Сообщить модератору
 Re: Шифрование данных при помощи сертификата  [new]
invm
Member

Откуда: Москва
Сообщений: 9913
Asymmetric encryption has certain limitations that should be noted before you attempt to encrypt data directly
with certificates or asymmetric keys. The EncryptByCert function can accept a char, varchar, binary,
nchar, nvarchar, or varbinary constant, column name, or variable as clear text to encrypt. Asymmetric
encryption, including encryption by certificate, on SQL Server returns a varbinary result, but will not return
a result longer than 432 bytes. As mentioned, the maximum length of the result depends on the length of
the encryption key used. As an example, with the default private key length of 1,024 bits, you can encrypt a
varchar plain text message with a maximum length of 117 characters and an nvarchar plain text message
with a maximum length of 58 characters.
The result in either case is a varbinary result of 128 bytes.
12 окт 14, 15:05    [16693281]     Ответить | Цитировать Сообщить модератору
 Re: Шифрование данных при помощи сертификата  [new]
RednasxelA
Member

Откуда:
Сообщений: 4
SQL2008
RednasxelA, попробуйте использовать переменную
DECLARE @text nvarchar(500) = N'УФК по г. Москве (Государственное учреждение - Московское отделение Фонда социального страхования Российской Федерации)';
SELECT (EncryptByCert(Cert_ID('Sertificat '),@text))


Не помогло, еще важно или нет у меня MS SQL Server 2012
12 окт 14, 15:06    [16693283]     Ответить | Цитировать Сообщить модератору
 Re: Шифрование данных при помощи сертификата  [new]
RednasxelA
Member

Откуда:
Сообщений: 4
invm
Asymmetric encryption has certain limitations that should be noted before you attempt to encrypt data directly
with certificates or asymmetric keys. The EncryptByCert function can accept a char, varchar, binary,
nchar, nvarchar, or varbinary constant, column name, or variable as clear text to encrypt. Asymmetric
encryption, including encryption by certificate, on SQL Server returns a varbinary result, but will not return
a result longer than 432 bytes. As mentioned, the maximum length of the result depends on the length of
the encryption key used. As an example, with the default private key length of 1,024 bits, you can encrypt a
varchar plain text message with a maximum length of 117 characters and an nvarchar plain text message
with a maximum length of 58 characters.
The result in either case is a varbinary result of 128 bytes.


А можно пожалуйста, ссылку на источник!
12 окт 14, 15:09    [16693289]     Ответить | Цитировать Сообщить модератору
 Re: Шифрование данных при помощи сертификата  [new]
invm
Member

Откуда: Москва
Сообщений: 9913
SQL Server 2005 Encryption – Encryption and data length limitations
Pro T-SQL 2012 Programmer's Guide
12 окт 14, 15:19    [16693304]     Ответить | Цитировать Сообщить модератору
 Re: Шифрование данных при помощи сертификата  [new]
RednasxelA
Member

Откуда:
Сообщений: 4
invm
SQL Server 2005 Encryption – Encryption and data length limitations
Pro T-SQL 2012 Programmer's Guide


Спасибо!
12 окт 14, 16:39    [16693462]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить