| Криптография | - Hashsum |
Hashsum
Краткое описание
Компонент Hashsum - предназначен для получения ХЕШ суммы входных данных по одному из доступных алгоритмов
Параметры
Методы
События
Данные
Пример
Пример использования компонента Hashsum
Add(MainForm,1885163,126,98)
{
Visible=1
Caption="Пример использования Hashsum"
Point(doVisible)
link(onActivate,3262116:doWork1,[])
}
Add(ChildForm,3262116,175,98)
{
link(onEvent1,1885163:doVisible,[(228,104)(228,157)(105,157)(105,132)])
link(onEvent2,1885163:doClose,[(219,111)(219,146)(114,146)(114,125)])
}
BEGIN_SDK
Add(EditMulti,1046684,21,21)
{
EventCount=2
WorkCount=1
Width=321
Height=221
link(doWork1,14188682:doClose,[(32,27)(32,146)])
}
Add(MainForm,14188682,49,119)
{
Left=35
Top=105
Width=253
Height=158
BorderStyle=7
TaskBar=1
DragForm=0
Point(onClose)
Point(doShowModal)
Point(doPlaceInTaskBar)
link(onCreate,14188682:doPlaceInTaskBar,[(91,139)(91,177)(37,177)(37,160)])
}
Add(Edit,12980779,154,63)
{
Left=55
Top=50
Width=130
Text="password"
}
Add(Button,517459,105,119)
{
Left=95
Top=90
link(onClick,9663469:doHashsum,[])
}
Add(Hashsum,9663469,154,119)
{
link(onResult,5034941:doCompare,[])
link(Data,12980779:Text,[])
}
Add(StrMask,5034941,210,119)
{
Mask="5F4DCC3B5AA765D61D8327DEB882CF99"
link(onFalse,15272090:doMessage,[(258,125)(258,69)])
link(onTrue,1997586:doData,[])
}
Add(Message,15272090,266,63)
{
Message="NO!!!! PASS!! \r\nNO!!!! PASS!!"
}
Add(Button,10185046,266,182)
{
Left=215
Top=10
Width=25
Caption="X"
link(onClick,1046684:onEvent2,[(327,188)(327,34)])
}
Add(DoData,1997586,266,126)
{
Data=Integer(1)
link(onEventData,1046684:onEvent1,[(318,132)(318,27)])
}
END_SDK
Замечания
Если на вход элемента поданы данные в формате Stream, то ХЕШ сумма будет вычеслена от всего бинарного потока. Все остальные форматы данных предварительно конвертируются в строку.
Основное применение компонента заключается в идентификации паролей по следущему принципу:
В тоже время, зная ХЕШ сумму, мы не можем восстановить по ней пароль или сами данные. Причина тут в алгоритме получения такой суммы, который для наглядности можно представить следующим образом:
например, есть пароль Hello, с которого мы вычисляем некоторую ХЕШ сумму:
где знак + означает суммирование кодов символов слова. Очевидно, что наш ХЕШ будет равен некоторому числу. А сможем ли мы проделать туже операцию в обратную сторону? Конечно нет, потому что получим одно уравнение с пятью неизвестными.
Именно так, только с гораздо большим числом преобразований, получается и ХЕШ сумма в компоненте.
Обновление элемента: [svn]Hashsum.pas[/svn]
Основное применение компонента заключается в идентификации паролей по следущему принципу:
- Пользователь вводит пароль, после чего программа вычисляет его ХЕШ сумму и запоминает
- При повторном вводе пароля программа опять вычисляет ХЕШ сумму и сравнивает её с запомненной ранее
- Если обе ХЕШ суммы совпали, то пароль был введен верно
В тоже время, зная ХЕШ сумму, мы не можем восстановить по ней пароль или сами данные. Причина тут в алгоритме получения такой суммы, который для наглядности можно представить следующим образом:
например, есть пароль Hello, с которого мы вычисляем некоторую ХЕШ сумму:
ХЕШ = H + e + l + l + o
Именно так, только с гораздо большим числом преобразований, получается и ХЕШ сумма в компоненте.
Обновление элемента: [svn]Hashsum.pas[/svn]
BB-code статьи для вставки
Всего комментариев: 0
(комментарии к статье еще не добавлены)