|
MD5 и PB10.5
|
|||
---|---|---|---|
#18+
Есть такой пример . Скорректировал его под "PB10 is Unicode" (практически только функции Asc ->AscA и Len -> LenA), но работает как-то странно. Если в тексте менять одну букву, то шифр остается без изменения. Если в текст добавить или удалить букву, то шифр меняется. Т.е. тесты типа (MD5-хеши) : Код: plaintext 1. 2. 3. 4.
Это так надо? Или в скрипте надо что-то ещё подправить? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.08.2009, 12:19 |
|
MD5 и PB10.5
|
|||
---|---|---|---|
#18+
Таки наверное, что что-то в скрипте , т.к. на тестовой Web-страничке показало везде так как и должно. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2009, 17:08 |
|
MD5 и PB10.5
|
|||
---|---|---|---|
#18+
В SingleLineEdit задаю текст и использую его в качестве аргумента "as_text" при вызове функции of_MD5: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87.
Чтобы не ввёл, результат отличается от тестового . Причем ещё и результат не меняется при замене в тексте SingleLineEdit одного символа, а только при изменении длины текста. Что сделано не так? Где ошибка? Код: plaintext 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2009, 14:34 |
|
MD5 и PB10.5
|
|||
---|---|---|---|
#18+
AISЧто сделано не так? Где ошибка? Как минимум CryptAcquireContextA неверно объявлена. Замените на CryptAcquireContextW, если не поможет будем разбираться дальше. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2009, 15:21 |
|
MD5 и PB10.5
|
|||
---|---|---|---|
#18+
Вобщем концептуально ваша проблема заключается в следующем. CryptHashData работает с блобом (массивом байт). Когда вы передаете "", то и в ANSI и Unicode это один и тот же массив байт длиной 0 байт, и хеш у них одинаковый. Если же вы передаете что-то отличное от "", то в ANSI и в Unicode это разные наборы байт. Поэтому тестовые строки дают разные результаты, т.к. у вас Unicode, а на сайте приведены результаты для ANSI строк. Плюс накладывается неправильное использование ф-и. Вы передаете строку в Unicode, а длину в ANSI которая в 2 раза меньше (в байтах). Тут есть несколько вариантов действий. Во-первых можно исправить вызов на Код: plaintext
Во-вторых можно хешировать предварительно преобразовав в ANSI Код: plaintext
ЗЫ. Предыдущее сообщение остается в силе. ЗЗЫ. И перестаньте гадать, а то почитал ваш код и прослезился :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2009, 15:52 |
|
MD5 и PB10.5
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky , в целом направление мысли (ANSI и/или Unicode) правильное, я в эту сторону и копал, вот только не получалось. Спасибо за подсказку. А по поводу кода: >> ЗЗЫ. И перестаньте гадать, а то почитал ваш код и прослезился :) так он не мой, я в самом начале на него ссылку дал. Был и другой похожий вариант. И оба вроде бы рабочие под РВ10, но по факту у меня ни один не заработал. :( Да и ладно, интересно другое: - если сейчас перейти по той же ссылке , то можно увидеть добавленное исправление для версии РВ10.5. Код: plaintext 1. 2. 3. 4. 5.
Спасибо "автору", видимо он тоже на этом форуме бывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2009, 21:26 |
|
MD5 и PB10.5
|
|||
---|---|---|---|
#18+
AISА по поводу кода: >> ЗЗЫ. И перестаньте гадать, а то почитал ваш код и прослезился :) так он не мой, я в самом начале на него ссылку дал. Был и другой похожий вариант. И оба вроде бы рабочие под РВ10, но по факту у меня ни один не заработал. :( Под гаданием я имел в виду не исходный код, а именно ваши модификации, где вы передаете строку в формате Unicode, а ее размер - в символах, хотя надо в байтах. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.09.2009, 22:47 |
|
MD5 и PB10.5
|
|||
---|---|---|---|
#18+
Вопрос по этой же теме: В ПО делаю вычисления MD5. Используемая библиотека - advapi32.dll. У одного из пользователей, у которого Vista, значение не совпало с тестовым. Что может быть причиной? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2010, 15:49 |
|
MD5 и PB10.5
|
|||
---|---|---|---|
#18+
Такое может быть из-за другого языка ОС. Например если юникодный текст для хеширования преобразуется в блоб таким образом: Код: plaintext 1.
Например русский текст в арабской винде превратится в ??????, т.к. в арабской кодовой странице Win1256 нет русских символов. Если ваша проблема из-за этого, то ее можно избежать, если хешировать непосредственно юникод, без преобразования в другие кодировки. Если требуется чтобы тестовые примеры о которых речь идет выше давали тот же хеш, то можно преобразовывать в UTF-8. В этом случае тексты в ASCII (это английские, цифры, пунктуация) будут давать такой же результат как и ANSI, т.к. UTF-8 совместима с кодовыми страницами ANSI в пределах 7-битных символов (ASCII). А если есть национальные символы(более 7 бит) - то результат будет отличаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2010, 23:57 |
|
MD5 и PB10.5
|
|||
---|---|---|---|
#18+
Anatoly MoskovskyТакое может быть из-за другого языка ОС. Например если юникодный текст для хеширования преобразуется в блоб таким образом: Код: plaintext 1.
Например русский текст в арабской винде превратится в ??????, т.к. в арабской кодовой странице Win1256 нет русских символов. Если ваша проблема из-за этого, то ее можно избежать, если хешировать непосредственно юникод, без преобразования в другие кодировки. Если требуется чтобы тестовые примеры о которых речь идет выше давали тот же хеш, то можно преобразовывать в UTF-8. В этом случае тексты в ASCII (это английские, цифры, пунктуация) будут давать такой же результат как и ANSI, т.к. UTF-8 совместима с кодовыми страницами ANSI в пределах 7-битных символов (ASCII). А если есть национальные символы(более 7 бит) - то результат будет отличаться. Да, я использую эту строку. Но: Винда, со слов пользователя, русская и в проверочном тексте только английские буквы, цифры и пунктуация. С UTF-8 на русской винде вроде работает правильно с текстом и на русском, и на английском. Спасибо за совет. Буду надеется, что этого достаточно будет. Конечно, мысли посещают разные (от отсутствия доступа либо отсутствия вообще dll и CryptoProvider-а, влияние вирусов и в т.ч. нерусской винды). Но как дистанционно понять таки в чем причина, чтобы сильно не напрегать пользователя, если причина не в этом? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2010, 02:57 |
|
MD5 и PB10.5
|
|||
---|---|---|---|
#18+
AISсо слов пользователя Рекомендую НИКОГДА не доверять словам пользователей. Даже когда они искренне в чем то уверены, это не значит, что так оно и есть на самом деле. Пользователи существуют в параллельном пространстве, где устоявшиеся ИТ термины могут значить что угодно, а многие события которые отображаются на экране пользователями не воспринимаются как существенные, поскольку если они не понимают сути происходящего то после нескольких повторов они просто игнорируют эти артефакты - они для них становятся частью интерфейса, и вы никогда "со слов пользователя" о них не узнаете. Что касается проблемы: 1) Думаю что UTF-8 - это наиболее разумный выбор, поскольку это стандарт дефакто для кодирования текстов в интернете. 2) Я бы проверил еще что проблема не связана с версией используемого криптопровайдера. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2010, 05:33 |
|
MD5 и PB10.5
|
|||
---|---|---|---|
#18+
Anatoly MoskovskyРекомендую НИКОГДА не доверять словам пользователей. Так вроде этого и придерживаюсь. Но по факту все-таки принимаю к сведению то, что говорят "начинающие пользователи", а вот в словах "продвинутых" однозначно сомневаюсь. Последние могут и скиншотик смастерить, и сообщение нужное смоделировать. :) Anatoly Moskovsky Что касается проблемы: 1) Думаю что UTF-8 - это наиболее разумный выбор, поскольку это стандарт дефакто для кодирования текстов в интернете. 2) Я бы проверил еще что проблема не связана с версией используемого криптопровайдера. Пока на этом и остановился: 1) Изменю на UTF-8 2) Добавлю проверку криптопровайдера. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.02.2010, 12:09 |
|
MD5 и PB10.5
|
|||
---|---|---|---|
#18+
Подскажите как получить мд5 фала? пробовал получить блоб и преобразовать в строку для функции, но ничего не получилось... ... |
|||
:
Нравится:
Не нравится:
|
|||
20.09.2010, 12:30 |
|
MD5 и PB10.5
|
|||
---|---|---|---|
#18+
Недавно dll для этого собрал. Вот код ля подключения функций: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Дальше думаю разобраться сможешь ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2010, 13:44 |
|
MD5 и PB10.5
|
|||
---|---|---|---|
#18+
Kent_vrnНедавно dll для этого собрал. Вот код ля подключения функций: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Дальше думаю разобраться сможешь Спасибо, но проблема в том что я сейчас пишу на 9м билдере, а длл, как я понимаю на 10 (не знаю или это имеет значение), и при работе с функциями появляется ошибка "Error opening dll library for external function ..." Буду пытаться решить проблему, но возможно Вы подскажите ответ раньше... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2010, 17:42 |
|
MD5 и PB10.5
|
|||
---|---|---|---|
#18+
Zin4uk, Уберите ;Ansi из деклараций функций. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2010, 17:49 |
|
MD5 и PB10.5
|
|||
---|---|---|---|
#18+
Локшин Марк, Не помогает, при обычном запуске ошибка "Bad runtime function reference..." а в режиме отладки "Error opening dll library for external function ..." использую дикларацию function boolean MakeFileHash (string filename, ref string md5, long dTypeHash) library "Hash.dll" alias for "MakeFileHash" ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2010, 10:39 |
|
MD5 и PB10.5
|
|||
---|---|---|---|
#18+
Не находит DLL. Разместите ее либо в PATH либо в папке с EXE (для запуска из IDE это папка где лежит pbXXX.exe). ... |
|||
:
Нравится:
Не нравится:
|
|||
12.10.2010, 14:54 |
|
MD5 и PB10.5
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky, Да, проблема была в том что не находило dll. Оказалось что в процессе выполнения программы менялся путь и когда обращался к функции dll, то искало не в папке с исполнительным файлом, а другой. Решил проблему функцией ChangeDirectory(*директория_исполняемого_файла*) перед вызовом. Большое спасибо за dll и всем кто помог решить проблему! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2010, 11:56 |
|
|
start [/forum/topic.php?fid=15&msg=36876935&tid=1335852]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
147ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 292ms |
total: | 533ms |
0 / 0 |