środa, kwietnia 23, 2008

Jednokierunkowa funkcja skrótu w T-SQL

declare @login varchar(20)
declare @pass varchar(20)
declare @i int
declare @j int
declare @k int
declare @seed1 int
declare @seed2 int
declare @s varchar(MAX)
declare @t varchar(MAX)

set @seed1 = 0x75ef9d
set @seed2 = 15371

set @login = 'xyz1'
set @pass = 'haslo'

set @t = ''
set @i = 1
set @k = 1

while @i < LEN(@pass)+LEN(@login)
begin
set @j = ASCII( substring(@pass, @i%LEN(@pass)+1, 1) )
set @k = ASCII( substring(@login, @i%LEN(@login)+1, 1) )
set @j = @j ^ @i ^ @k ^ LEN(@pass) ^ @seed1
set @seed1 = (@seed1 + @j) % @seed2
set @i = @i + 1
end


set @i = 1
while @i <= 20
begin
set @j = ASCII( substring(@pass, @i%LEN(@pass)+1, 1) )
set @j = @j ^ @i ^ @seed1
set @t = @t + CHAR(@j%256)
set @i = @i + 1
end


print @t

--Zmiana na wejściu o odległości Hamminga równej 1
--powinna spowodować zmianę lawinową na wyjściu

0 komentarze: