Триггер шифрования SQL Server 2005 - PullRequest
0 голосов
/ 02 октября 2008

У меня есть скрипт, который успешно шифрует кредитную карту. Мне нужно, чтобы он работал как триггер, чтобы любая вставка в столбец кредитной карты автоматически шифровала его. Прямо сейчас мой триггер работает, НО столбец кредитной карты varchar. Когда приложение пытается вставить, я делаю это:

DECLARE @encryptedCreditCardNumber varbinary(max)
SET @encryptedCreditCardNumber = EncryptByKey(Key_GUID('testKey'), @CreditCardNumber));

Это отлично работает, но как мне тогда преобразовать varbinary (max) в varchar (то есть столбец кредитной карты) Столбец с кредитными картами долгое время был в моей компании varchar, и от него зависит много устаревшего кода.

Спасибо

1 Ответ

1 голос
/ 02 октября 2008

Ваш самый простой подход - преобразовать двоичный файл в base64 и сохранить его в столбце varchar. Base64 - это метод для рендеринга двоичных данных с использованием ascii-кодирования, чтобы они могли быть представлены в таких форматах, как XML. Вы можете выполнить преобразование, выполнив:

select cast(N'' as xml).value('xs:base64Binary(xs:hexBinary(sql:variable("@encryptedCreditCardNumber")))', 'varchar(max)');

Это проходит через посредника XML для правильного кодирования varbinary в varchar. Чтобы отменить процесс в БД, используйте:

select cast(N'' as xml).value('xs:base64Binary(sql:variable("@base64stringvariable"))', 'varbinary(20)');

Редактировать : Полезная ссылка - http://blogs.msdn.com/sqltips/archive/2008/06/30/converting-from-base64-to-varbinary-and-vice-versa.aspx

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