уже пожеванное:
CREATE PROCEDURE #sp_hexadecimal --taken from 2000
@binvalue varbinary(256),
@hexvalue varchar(256) OUTPUT
AS
DECLARE @charvalue varchar(256)
DECLARE @i int
DECLARE @length int
DECLARE @hexstring char(16)
SELECT @charvalue = '0x'
SELECT @i = 1
SELECT @length = DATALENGTH (@binvalue)
SELECT @hexstring = '0123456789ABCDEF'
WHILE (@i <= @length)
BEGIN
DECLARE @tempint int
DECLARE @firstint int
DECLARE @secondint int
SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1))
SELECT @firstint = FLOOR(@tempint/16)
SELECT @secondint = @tempint - (@firstint*16)
SELECT @charvalue = @charvalue +
SUBSTRING(@hexstring, @firstint+1, 1) +
SUBSTRING(@hexstring, @secondint+1, 1)
SELECT @i = @i + 1
END
SELECT @hexvalue = @charvalue
go
declare @hash varbinary (255); set @hash = pwdencrypt('P@ssw0rd')
declare @sql varchar(4000); exec #sp_hexadecimal @binvalue = @hash, @hexvalue = @sql OUTPUT
set @sql = 'CREATE LOGIN test WITH PASSWORD = ' + @sql + ' HASHED'
print @sql
exec (@sql)
select loginname,createdate from master.dbo.syslogins where pwdcompare('P@ssw0rd',[password]) = 1
go
drop login test
drop procedure #sp_hexadecimal