|
|
|
Как вычислить хэш строки
|
|||
|---|---|---|---|
|
#18+
Мне нужно для задачи со строками уметь считать хэш для строк хотя бы длины 100 символов. Нашёл как это делать ( http://e-maxx.ru/algo/string_hashes), но в delphi даже при подсчёте степеней P возникает переполнение на степени 12. Как можно выгодно в delphi посчитать хэш строки или хотя как сделать, что бы число обрезалось и не было ошибки с переполнением? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2011, 00:13:26 |
|
||
|
Как вычислить хэш строки
|
|||
|---|---|---|---|
|
#18+
Jumbo.loveКак можно выгодно в delphi посчитать хэш строки В Indy дофига классов для вычисления хэшей, включая CRC32 и SHA1. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2011, 00:24:54 |
|
||
|
Как вычислить хэш строки
|
|||
|---|---|---|---|
|
#18+
В Indy10 искать TIdHashMessageDigest5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2011, 13:11:36 |
|
||
|
Как вычислить хэш строки
|
|||
|---|---|---|---|
|
#18+
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-} ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2011, 15:17:08 |
|
||
|
Как вычислить хэш строки
|
|||
|---|---|---|---|
|
#18+
S.G., при попытке присвоить переменной значение не из диапазона прога сразу вылетает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2011, 15:56:20 |
|
||
|
Как вычислить хэш строки
|
|||
|---|---|---|---|
|
#18+
Jumbo.loveS.G., при попытке присвоить переменной значение не из диапазона прога сразу вылетает.Да. Но никто не предлагает присваивать не из диапазона. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2011, 18:00:42 |
|
||
|
Как вычислить хэш строки
|
|||
|---|---|---|---|
|
#18+
S.G., так в том и вопрос: в процессе вычисления степеней P в цикле 31 (например) возводится в степень как exp (ln(31)*i) и на i=12 вылетает и надо проследить, чтобы число обрезалось ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2011, 18:45:24 |
|
||
|
Как вычислить хэш строки
|
|||
|---|---|---|---|
|
#18+
А где там вычисление степеней через логарифмы и экспоненты? Каждый раз происходит умножение целочисленного значения на 31, например. Результат в этом случае обрезается каждый раз безо всяких ошибок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2011, 19:58:13 |
|
||
|
Как вычислить хэш строки
|
|||
|---|---|---|---|
|
#18+
Нелояльный, можно и так, сейчас попробую ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2011, 20:07:31 |
|
||
|
Как вычислить хэш строки
|
|||
|---|---|---|---|
|
#18+
Вот блин, получилось, правда он округляет почему-то до отрицательных, но ладно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.04.2011, 20:15:28 |
|
||
|
Как вычислить хэш строки
|
|||
|---|---|---|---|
|
#18+
Подскажите, а длина MD5 всегда одинакова? Нужно хранить пароль в зашифрованном виде в базе. Поэтому нужно знать, какую длину поля указывать при создании поля. Допустим, хватит ли VARCHAR(32)? Я правильно понимаю, что хеш пароля в MD5 Можно будет вводить в любых национальных символах, если учесть, что база и приложение юникодные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2017, 12:46:03 |
|
||
|
Как вычислить хэш строки
|
|||
|---|---|---|---|
|
#18+
хеш всегда имеет фиксированную длину. для MD5 это 128 бит (16 байт). можешь хранить так же как GUID, в зависимости от используемой СУБД. если нет специального типа, можешь хранить как два int64. а можешь как CHAR(16) CHARACTER SET OCTETS Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2017, 12:59:26 |
|
||
|
Как вычислить хэш строки
|
|||
|---|---|---|---|
|
#18+
Мимопроходящийможешь хранить как два int64. я думал, что хеш MD5 - это строка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2017, 13:24:01 |
|
||
|
Как вычислить хэш строки
|
|||
|---|---|---|---|
|
#18+
TIdHashMessageDigest5.HashStringAsHex возвращает строку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2017, 13:25:16 |
|
||
|
Как вычислить хэш строки
|
|||
|---|---|---|---|
|
#18+
14.11.2017 13:24, X11 пишет: > я думал, что хеш MD5 - это строка. ты плохо думал. подумай ещё. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2017, 13:28:59 |
|
||
|
Как вычислить хэш строки
|
|||
|---|---|---|---|
|
#18+
Почитал, что MD5 лучше не использовать из-за коллизий. У InDy ещё есть TIdHashMessageDigest, TIdHashMessageDigest2 и TIdHashMessageDigest4. Какой правильней использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2017, 13:54:44 |
|
||
|
Как вычислить хэш строки
|
|||
|---|---|---|---|
|
#18+
Нашёл TIdHashSHA1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2017, 14:02:58 |
|
||
|
Как вычислить хэш строки
|
|||
|---|---|---|---|
|
#18+
Мимопроходящийты плохо думал. подумай ещё. это байты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2017, 14:03:32 |
|
||
|
Как вычислить хэш строки
|
|||
|---|---|---|---|
|
#18+
14.11.2017 14:02, X11 пишет: > Нашёл TIdHashSHA1 они примерно одинаково "дуростойкие". разница несущественна. кроме того SHA1 чуть медленнее. зы: для "тихушного" заполучения пароля обычно используют "социоинженерные" методы. для брутфорса нужны уж очень специфические условия, не согласующиеся с "тихушностью". ззы: не парься, бери любой. уровень паранойи лечится глотком алкоголя. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2017, 14:12:44 |
|
||
|
Как вычислить хэш строки
|
|||
|---|---|---|---|
|
#18+
SHA1 as Hex можно хранить как строку в базе "6FB476DE07C18C29D7FC9D6DEB1F25B0D91E0504". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2017, 14:20:24 |
|
||
|
Как вычислить хэш строки
|
|||
|---|---|---|---|
|
#18+
14.11.2017 14:20, X11 пишет: > SHA1 as Hex можно хранить как строку в базе "6FB476DE07C18C29D7FC9D6DEB1F25B0D91E0504". любой хэш можно хранить как 16-ричное строковое представление. точно так же как и GUID, который нихрена не "строковый". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2017, 14:24:17 |
|
||
|
Как вычислить хэш строки
|
|||
|---|---|---|---|
|
#18+
TIdHashSHA1.HashString возвращает тип System.TArray<System.Byte> Я не работал с таким типом данных. Как хранить это в базе, какой тип поля? Как передать это в базу Firebird 2.5 c использованием FibPlus, например? пока не догоняю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2017, 14:30:58 |
|
||
|
Как вычислить хэш строки
|
|||
|---|---|---|---|
|
#18+
X11Почитал, что MD5 лучше не использовать из-за коллизий.Коллизии, которые бывают во всех алгоритмах, для сравнения хэшей паролей вообще не важны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2017, 14:32:28 |
|
||
|
Как вычислить хэш строки
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2017, 14:36:17 |
|
||
|
Как вычислить хэш строки
|
|||
|---|---|---|---|
|
#18+
Мимопроходящийиспользуй hex-string и храни как обычную строку. Вот опять пришли к первоначальному вопросу: X11Нужно хранить пароль в зашифрованном виде в базе. Поэтому нужно знать, какую длину поля указывать при создании поля. Допустим, хватит ли VARCHAR(32)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2017, 14:45:11 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=126&tid=2041590]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 365ms |

| 0 / 0 |
