ФорумыТемы

Новое сообщение

Сообщения темы 'ASP. Получение криптографического хеша'

Фильтр:
содержит   Сортировка   

  

gliba 22.05.2009 17:24
Иногда возникает необходимость использовать криптографический хеш, например, при хранении паролей в базе данных. В настоящее время для этих целей наиболее широко используются алгоритмы MD5 и SHA1, которые имеют много реализациий, в том числе и у Microsoft. Однако получение криптографического хеша в ASP не совсем тривиально, в связи с редким использованием и слабым документированием, в отличии от .NET. Потратив довольно много времени, мне удалось написать функцию, которая решает поставленную задачу. Код в VBS иллюстрирует этот подход.

Код



<%@ LANGUAGE="VBScript"%>
<%
option explicit

dim source
source = Request("source")
if source = "" then source = "Hello World!"

function getHash( str )
dim oUTF8, oMD5, abyt, i, k, hi, lo, chHi, chLo
	getHash = ""
	set oUTF8 = Server.CreateObject("System.Text.UTF8Encoding")
	set oMD5 = Server.CreateObject("System.Security.Cryptography.MD5CryptoServiceProvider")

	abyt = oMD5.ComputeHash_2(oUTF8.GetBytes_4( str ))
'	Response.Write "len=" & LenB(abyt) & "<br>"
	for i = 1 to LenB(abyt)
		k = AscB(MidB( abyt, i, 1 ))
	    lo = k Mod 16
	    hi = (k - lo) / 16
	    if hi > 9 then
	        chHi = Chr(Asc("a") + hi - 10)
	    else
	        chHi = Chr(Asc("0") + hi)
	    end if
	    if lo > 9 then
	        chLo = Chr(Asc("a") + lo - 10)
	    else
	        chLo = Chr(Asc("0") + lo)
	    end if
	    getHash = getHash & chHi & chLo
	next

	set oUTF8 = nothing
	set oMD5 = nothing
end function

Response.Write "hash( '" & source & "' ) = '" & getHash(source) & "'"
'The MD5 hash of Hello World! is: ed076287532e86365e841e92bfc50d8c.
%>



Комментарии

Объект oUTF8 = Server.CreateObject("System.Text.UTF8Encoding") используется для преобразования строки в последовательность байтов. Внимание, недокументированный метод GetBytes_4. Объект oMD5 = Server.CreateObject("System.Security.Cryptography.MD5CryptoServiceProvider") реализует хеширование. Внимание, недокументированный метод ComputeHash_2. Он создает хеш из 16 байтов. Далее форматируем его побайтно (выделяя старшую и младшую 16-ричные цифры) в строку из 32 символов.
  
  

yura 22.05.2009 21:06
ofiget!
  



Новое сообщение
 

Послать уведомление по e-mail

Продолжить


Авторизоваться через https://www.pvobr.ru
Логин
Пароль
Регистрация

Авторизоваться через соцсети
Наверх