Поделись:





РАЗДЕЛЫ
Авиация и космонавтика (292)
Административное право (113)
Английский язык (62064)
Арбитражный процесс (22)
Архитектура (98)
Астрология (15)
Астрономия (4788)
Банкосвкое дело (4987)
Без категории (14560)
Безопасность жизнедеятельности (2585)
Биографии (3219)
Биология (4036)
Биология и химия (1421)
Биржевое дело (61)
Ботаника и сельское хозяйство (2694)
Бухгалтерский учет и аудит (7694)
Валютные отношения (47)
Ветеринария (45)
Военная кафедра (732)
География (4779)
Геодезия (27)
Геология (1186)
Геополитика (42)
Государство и право (19449)
Гражданское право и процесс (434)
Делопроизводство (17)
Деньги и кредит (96)
ЕГЭ (32)
Естествознание (92)
Журналистика (899)
ЗНО (47)
Зоология (34)
Издательское дело и полиграфия (475)
Инвистиции (91)
Информатика (3452)
Информатика, программирование (5960)
Исторические личности (2109)
История (20812)
История техники (765)
Кибернетика (60)
Коммуникации и связь (3050)
Компьютерные науки (60)
Косметология (17)
Краеведение и этнография (580)
Краткое содержание произведений (1000)
Криминалистика (102)
Криминология (46)
Кулинария (1147)
Культура и искусство (8212)
Культурология (501)
Литература (зарубежная) (2035)
Литература и русский язык (11459)
Логика и логстика (545)
Маркетинг (7739)
Медицина и здоровье (9936)
Международное право (79)
Международные отношения (2189)
Менеджмент (11960)
Металлургия (82)
Москвоведение (764)
Музыка (1307)
Налоги и налогооблажение (199)
Наука и техника (1139)
Начертательная геометрия (9)
Окультизм и уфология (8)
Педагогика (7566)
Политология (3650)
Право, юриспруденция (3708)
Предпринимательство (406)
Промышленность и производство (6865)
Психология (8363)
Психология и педагогика (4048)
Радиоэлектронника (364)
Реклама (948)
Религия и мифология (2829)
Риторика (23)
Сексология (748)
Социология (4709)
Статистика (80)
Страхование (105)
Строительство (1984)
Таможенная система (655)
Теория государства и права (219)
Теория организации (35)
Технология (492)
Транспорт (2552)
Туризм (80)
Уголовное право и процесс (369)
Управление (105)
Физика (3298)
Физкультура и спорт (4360)
Философия (6846)
Финансовые науки (4389)
Финансы (5237)
Химия (2195)
Цифровые устройства (22)
Экология (4322)
Экономика (19673)
Экономико-математическое моделирование (644)
Экономическая география (113)
Экономическая теория (2472)
Этика (887)
Юриспруденция (268)
Языковедение (135)
Языкознание и филология (1140)
Счетчики


Использование COM-объектов в хранимых процедурах SQL Server
Раздел: Информатика


Использование COM-объектов в хранимых процедурах SQL Server

Рассмотрим, например, ситуацию, когда хранимая процедура по входному параметру паролю брала бы его MD5 значение и заносила полученное значение в таблицу.

Такая ситуация может возникнуть при регистрации пользователей, когда в таблице находятся не реальные пароли, а их MD5 значения.

Возникает вопрос - можно ли функционал по взятию MD5 значений паролей перенести в хранимую процедуру, если существует COM-объект, который генерит хэш-значения MD5 ?

Конечно, эту процедуру можно реализовать в приложении через простой вызов COM-объекта, но мы рассмотрим как это можно сделать в Transact-SQL.

В качестве COM-объекта возьмем ActiveX-компонент CryptLib, который можно взять на данном сайте http://www.activex.net.ru/activex/more.shtml#cryptlib и зарегистрировать в реестре стандартно через regsvr32.

Далее воспользуемся системными процедурами SQL Server, которые позволяют работать с COM-объектами:


sp_OACreate


sp_OAMethod


sp_OADestroy

 sp_OAGetErrorInfo

Для запуска этих системных процедур пользователь, от имени которого будет запускаться наша процедура, должен входить в роль sysadmin.

Текст процедуры InsertMD5Value:


CREATE PROCEDURE dbo.InsertMD5Value

@Login Varchar(50), @Password Varchar(50)

AS

DECLARE @object int

DECLARE @hr Int

DECLARE @md5_hash varchar(255)

DECLARE @src varchar(255), @desc varchar(255)

SET NOCOUNT ON

EXEC @hr = sp_OACreate 'CryptLib.MD5', @object OUT

IF @hr <> 0

-- Сообщение об ошибке

BEGIN





EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT

SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc

GOTO END_FINAL

END

ELSE

BEGIN

EXEC @hr = sp_OAMethod @object, 'Crypt', @md5_hash OUT, @Password

IF @hr <> 0

GOTO CLEANUP

ELSE

PRINT @md5_hash


-- для примера просто печатаем MD5 значение.


-- здесь можно делать вставку полученного MD5 значения в таблицу,


-- предварительно сделав проверку на существование в таблице значения



--
из

переданного

параметра
@Login

-- INSERT INTO UsersReg (Login, Passwd) VALUES (@Login, @Password)

END

CLEANUP:

IF @hr <> 0

BEGIN

EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT

SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc

END

BEGIN

EXEC @hr = sp_OADestroy @object

IF @hr <> 0

BEGIN

EXEC sp_OAGetErrorInfo @object, @src OUT, @desc OUT

SELECT hr=convert(varbinary(4),@hr), Source=@src, Description=@desc


END


END

END_FINAL:

RETURN



Для запуска этой хранимой процедуры достаточно просто выполнить

EXEC dbo.InsertMD5Value 'user1', 'test'


Христофоров

Юрий




Оценка: 0. | Оценило 0 человека.
ВНИМАНИЕ
Уважаемые гости, хотим обратить Ваше внимание на то, что все представленные работы на этом сайте получены с публичных ресурсов, находятся в свободном доступе, не являются уникальными и не подходят для их сдачи "как есть".
Если вы обладаете авторским правом на какую либо информацию, размещенную на нашем сайте и не согласны с её общедоступностью, обязательно сообщите нам об этом.
Данные работы Вы можете использовать в качестве дополнительных материалов для написания своего реферата либо любой другой работы.
В ПОМОЩЬ УЧАЩИМСЯ
Мы настоятельно рекомендуем нашим пользователям самостоятельно выполнять все работы. Но бывают ситуации, когда нет возможности, либо элементарно времени, чтобы самому заниматься той или иной работой. В этом случае можно заказать выполнение за вас реферата, курсовой и т.д. Но будет ли такая работа соответствовать всем вашим критериям? Сомневаемся. Поэтому хотим дать вам хороший совет. Найдите на нашем сайте работу, максимально подходящую под ваши критерии. Закажи повышение оригинальности и получите уникальную работу для сдачи. Это сэкономит вам деньги и вы получите именно то, что хотели.
НОВОСТИ НАУКИ
Обратная связь
По всем интересующим вас вопросам обращайтесьна почту:


Если у вас есть интересная работа и вы хотите ей поделиться, присылайте ее нам и мы обязательно разместим ее на нашем сайте, а пользователи обязательно скажут вам спасибо: