Я хотел бы зашифровать строки из 1500-2500 символов с помощью асимметричного ключа. Кажется, что RSA_2048
будет шифровать только до 245 символов.Asymmestric-like Шифрование длинных строк
В редакции MSDN Article about EncryptByAsymKey() рекомендуется «не шифровать большие массивы данных с использованием асимметричного ключа. Вместо этого вы должны шифровать данные с помощью сильного симметричного ключа и шифровать симметричный ключ с помощью асимметричного ключа».
Есть ли способ сделать это без необходимости использования пароля Асимметричного ключа? или я иду по этому неправильно?
Declare @plain varchar(max), @cipher varbinary(max);
Set @plain = 'Greg';
CREATE ASYMMETRIC KEY akey WITH ALGORITHM = RSA_2048 ENCRYPTION BY PASSWORD = '123pass!';
CREATE SYMMETRIC KEY skey WITH ALGORITHM = AES_256 ENCRYPTION BY ASYMMETRIC KEY akey;
OPEN SYMMETRIC KEY skey DECRYPTION BY ASYMMETRIC KEY akey WITH PASSWORD = '123pass!';
Set @cipher = ENCRYPTBYKEY(KEY_GUID('skey'), @plain);
... write @cipher to db ...
EDIT: мне еще нужно, чтобы иметь возможность расшифровать данные из другого приложения. Я хочу, чтобы общественность сталкивалась с приложением на нашем веб-сервере, чтобы зашифровать информацию о заказе клиента и записать ее в базу данных. Тогда только сможете расшифровать его, используя другое приложение, работающее на сервере, физически расположенном в офисе.
Что-то вроде этого? http://www.sswug.org/articles/viewarticle.aspx?id=18250 –
Если вы можете переместить шифрование/дешифрование в (.NET?) приложение, а не выполнять его в процедуре T-SQL, я считаю, что вы будет иметь всю гибкость, необходимую для решения ваших проблем. –
Но вы хотите, чтобы иметь возможность расшифровать их из другого приложения, не так ли? – CodesInChaos