Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
  • Страница:
  • 1

ТЕМА:

Хранимая процедура. Генератор паролей 4 года 6 мес. назад #185

  • Олег Коровяков
  • Олег Коровяков аватар Автор темы
  • Не в сети
  • Автор сайта
  • Автор сайта
  • Сообщений: 280
  • Репутация: 1
  • Спасибо получено: 1
Хранимая процедура SQL Server, позволяющая генерировать уникальные пароли. Процедура принимает два параметра. Первый указывает максимальный размер генерируемого пароля (по умолчанию - 8). Второй - тип пароля, который может быть простым (simple) - состоящим из маленьких букв, либо сложным (complex) - состоящим из всем доступных символов.

Инструкции
Использовать, например так:

-- простой пароль из 4 символов
exec random_password 4

-- сложный пароль из 12 символов
exec random_password 12, 'complex'
CREATE PROC random_password
(
@len int = 8, --длина пароля
@password_type char(7) = 'simple' -- simple - простой пароль, complex - сложный пароль
)
AS
BEGIN
DECLARE @password varchar(25), @type tinyint, @bitmap char(6)
SET @password='' 
SET @bitmap = 'uaeioy' 
WHILE @len > 0
BEGIN
	IF @password_type = 'simple' --простой пароль
	BEGIN
	IF (@len%2) = 0
		
		SET @password = @password + SUBSTRING(@bitmap,CONVERT(int,ROUND(1 + (RAND() * (5)),0)),1)
	ELSE 
		SET @password = @password + CHAR(ROUND(97 + (RAND() * (25)),0))
		
	END
	ELSE --сложный пароль
	BEGIN
		SET @type = ROUND(1 + (RAND() * (3)),0)

		IF @type = 1 
			SET @password = @password + CHAR(ROUND(97 + (RAND() * (25)),0))
		ELSE IF @type = 2 
			SET @password = @password + CHAR(ROUND(65 + (RAND() * (25)),0))
		ELSE IF @type = 3
			SET @password = @password + CHAR(ROUND(48 + (RAND() * (9)),0))
		ELSE IF @type = 4
			SET @password = @password + CHAR(ROUND(33 + (RAND() * (13)),0))
	END

	SET @len = @len - 1
END

SELECT @password --выводим результат

END

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Олег Коровяков.
  • Страница:
  • 1
Модераторы: Дмитрий

О сайте

Строительство индивидуальных домов из лёгкого самана - опыт, советы, методика строительства и подробные инструкции. А также возможность применения альтернативных источников энергии.


Контакты

08340. ул.Салютная 17. с.Гнедын.
Киевская обл. Украина.

+38 067 492 4124.
+38 095 065 8860.

info@okwood.com.ua
www.okwood.com.ua

Местоположения


8PM2+7R Гнедин, Kyiv Oblast