powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как вычислить хэш строки
25 сообщений из 35, страница 1 из 2
Как вычислить хэш строки
    #37231202
Jumbo.love
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне нужно для задачи со строками уметь считать хэш для строк хотя бы длины 100 символов. Нашёл как это делать ( http://e-maxx.ru/algo/string_hashes), но в delphi даже при подсчёте степеней P возникает переполнение на степени 12. Как можно выгодно в delphi посчитать хэш строки или хотя как сделать, что бы число обрезалось и не было ошибки с переполнением?
...
Рейтинг: 0 / 0
Как вычислить хэш строки
    #37231211
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jumbo.loveКак можно выгодно в delphi посчитать хэш строки

В Indy дофига классов для вычисления хэшей, включая CRC32 и SHA1.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как вычислить хэш строки
    #37231835
Zelius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Indy10 искать TIdHashMessageDigest5
...
Рейтинг: 0 / 0
Как вычислить хэш строки
    #37232178
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jumbo.loveМне нужно для задачи со строками уметь считать хэш для строк хотя бы длины 100 символов. Нашёл как это делать ( http://e-maxx.ru/algo/string_hashes), но в delphi даже при подсчёте степеней P возникает переполнение на степени 12. Как можно выгодно в delphi посчитать хэш строки или хотя как сделать, что бы число обрезалось и не было ошибки с переполнением?

из ссылки, в самом начале:

авторСамо значение хэша желательно хранить в самом большом числовом типе - int64, он же long long. Очевидно, что при длине строки порядка 20 символов уже будет происходить переполнение значение. Ключевой момент - что мы не обращаем внимание на эти переполнения, как бы беря хэш по модулю 2^64.

По умолчанию (если не ошибаюсь) при умножении целых чисел, нет owerflow checking , т.е. не должно возникать ошибки переполнения (хотя переполнение возникает, естественно).
Во всяком случае, можно посмотреть хелп по опции Overflow checking - {$Q+} or {$Q-}
...
Рейтинг: 0 / 0
Как вычислить хэш строки
    #37232246
Jumbo.love
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
S.G.,

при попытке присвоить переменной значение не из диапазона прога сразу вылетает.
...
Рейтинг: 0 / 0
Как вычислить хэш строки
    #37232506
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jumbo.loveS.G.,

при попытке присвоить переменной значение не из диапазона прога сразу вылетает.Да.
Но никто не предлагает присваивать не из диапазона.
...
Рейтинг: 0 / 0
Как вычислить хэш строки
    #37232572
Jumbo.love
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
S.G.,

так в том и вопрос: в процессе вычисления степеней P в цикле 31 (например) возводится в степень как exp (ln(31)*i) и на i=12 вылетает и надо проследить, чтобы число обрезалось
...
Рейтинг: 0 / 0
Как вычислить хэш строки
    #37232644
Нелояльный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А где там вычисление степеней через логарифмы и экспоненты? Каждый раз происходит умножение целочисленного значения на 31, например. Результат в этом случае обрезается каждый раз безо всяких ошибок.
...
Рейтинг: 0 / 0
Как вычислить хэш строки
    #37232652
Jumbo.love
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нелояльный,

можно и так, сейчас попробую
...
Рейтинг: 0 / 0
Как вычислить хэш строки
    #37232665
Jumbo.love
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот блин, получилось, правда он округляет почему-то до отрицательных, но ладно
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как вычислить хэш строки
    #39552817
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, а длина MD5 всегда одинакова?
Нужно хранить пароль в зашифрованном виде в базе.
Поэтому нужно знать, какую длину поля указывать при создании поля.
Допустим, хватит ли VARCHAR(32)?

Я правильно понимаю, что хеш пароля в MD5 Можно будет вводить в любых национальных символах, если учесть, что база и приложение юникодные?
...
Рейтинг: 0 / 0
Как вычислить хэш строки
    #39552823
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хеш всегда имеет фиксированную длину.
для MD5 это 128 бит (16 байт).
можешь хранить так же как GUID, в зависимости от используемой СУБД.
если нет специального типа, можешь хранить как два int64.
а можешь как CHAR(16) CHARACTER SET OCTETS
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как вычислить хэш строки
    #39552836
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийможешь хранить как два int64.
я думал, что хеш MD5 - это строка.
...
Рейтинг: 0 / 0
Как вычислить хэш строки
    #39552837
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TIdHashMessageDigest5.HashStringAsHex возвращает строку
...
Рейтинг: 0 / 0
Как вычислить хэш строки
    #39552839
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
14.11.2017 13:24, X11 пишет:
> я думал, что хеш MD5 - это строка.

ты плохо думал.
подумай ещё.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как вычислить хэш строки
    #39552854
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитал, что MD5 лучше не использовать из-за коллизий.
У InDy ещё есть TIdHashMessageDigest, TIdHashMessageDigest2 и TIdHashMessageDigest4.
Какой правильней использовать?
...
Рейтинг: 0 / 0
Как вычислить хэш строки
    #39552861
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашёл TIdHashSHA1
...
Рейтинг: 0 / 0
Как вычислить хэш строки
    #39552863
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийты плохо думал.
подумай ещё.

это байты?
...
Рейтинг: 0 / 0
Как вычислить хэш строки
    #39552871
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
14.11.2017 14:02, X11 пишет:
> Нашёл TIdHashSHA1

они примерно одинаково "дуростойкие".
разница несущественна.
кроме того SHA1 чуть медленнее.

зы: для "тихушного" заполучения пароля обычно используют "социоинженерные" методы.
для брутфорса нужны уж очень специфические условия, не согласующиеся с "тихушностью".

ззы: не парься, бери любой. уровень паранойи лечится глотком алкоголя.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как вычислить хэш строки
    #39552875
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SHA1 as Hex можно хранить как строку в базе "6FB476DE07C18C29D7FC9D6DEB1F25B0D91E0504".
...
Рейтинг: 0 / 0
Как вычислить хэш строки
    #39552878
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
14.11.2017 14:20, X11 пишет:
> SHA1 as Hex можно хранить как строку в базе "6FB476DE07C18C29D7FC9D6DEB1F25B0D91E0504".

любой хэш можно хранить как 16-ричное строковое представление.
точно так же как и GUID, который нихрена не "строковый".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как вычислить хэш строки
    #39552880
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TIdHashSHA1.HashString возвращает тип System.TArray<System.Byte>

Я не работал с таким типом данных.
Как хранить это в базе, какой тип поля?
Как передать это в базу Firebird 2.5 c использованием FibPlus, например?
пока не догоняю
...
Рейтинг: 0 / 0
Как вычислить хэш строки
    #39552881
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11Почитал, что MD5 лучше не использовать из-за коллизий.Коллизии, которые бывают во всех алгоритмах, для сравнения хэшей паролей вообще не важны.
...
Рейтинг: 0 / 0
Как вычислить хэш строки
    #39552882
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
14.11.2017 14:30, X11 пишет:
> TIdHashSHA1.HashString возвращает тип System.TArray<System.Byte>
>
> Я не работал с таким типом данных.
> Как хранить это в базе, какой тип поля?
> Как передать это в базу Firebird 2.5 c использованием FibPlus, например?
> пока не догоняю

через FIBQuery.
для хранения используй CHAR(20) CHARACTER SET OCTETS.

зы: если это "сложно", используй hex-string и храни как обычную строку.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как вычислить хэш строки
    #39552890
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящийиспользуй hex-string и храни как обычную строку.

Вот опять пришли к первоначальному вопросу:

X11Нужно хранить пароль в зашифрованном виде в базе.
Поэтому нужно знать, какую длину поля указывать при создании поля.
Допустим, хватит ли VARCHAR(32)?
...
Рейтинг: 0 / 0
25 сообщений из 35, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как вычислить хэш строки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]