powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / А кто-нибудь знает подробности SYS(2007)?
17 сообщений из 17, страница 1 из 1
А кто-нибудь знает подробности SYS(2007)?
    #32817618
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!
По какому принципу рассчитывается контрольная сумма в SYS(2007)? В Хелпе такого не нашел. Может, это секрет Мелкософта? Это я к тому, насколько уникальные значения можно получить через SYS(2007)...
...
Рейтинг: 0 / 0
А кто-нибудь знает подробности SYS(2007)?
    #32817680
Код: plaintext
1.
2.
3.
The SYS( 2007 ) function returns the checksum value of the character expression <expC>. The correct syntax is SYS( 2007 ,<expC>). A checksum can be used to test the validity of data or to compare two character expressions. 

NOTE: Checksum is a "byte-oriented CRC-16" algorithm. The exact logic was last published in the February  1986  edition of "Dr. Dobbs Journal." 
...
Рейтинг: 0 / 0
А кто-нибудь знает подробности SYS(2007)?
    #32817795
oleg_km
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CRC-16 на очень маленькой выборке дает одинаковые значения. Точные цифры не скажу, но как-то пробовал на небольшом файле с уникальным символьным полем высчитать SYS(2007) и потом нашел очень много дублей и даже "триблей". Поэтому сейчас использую MD5. Пока дублей не было. Все это голая практика, если кто знает теорию - подскажите.
...
Рейтинг: 0 / 0
А кто-нибудь знает подробности SYS(2007)?
    #32817887
Фотография Vladimir M Sklyar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поделись как ты прикрутил MD5 к фоксу.

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
А кто-нибудь знает подробности SYS(2007)?
    #32818334
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Дмитрий Маликов:
Благодарю за информацию. Теперь буду знать, где смотреть.
To oleg_km:
Согласен с Vladimir M Sklyar - поподробней, если можно...
...
Рейтинг: 0 / 0
А кто-нибудь знает подробности SYS(2007)?
    #32819900
oleg_km
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
См. приложение
...
Рейтинг: 0 / 0
А кто-нибудь знает подробности SYS(2007)?
    #32823255
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To oleg_km:
Скачал. Спасибо. Интересно.
...
Рейтинг: 0 / 0
А кто-нибудь знает подробности SYS(2007)?
    #32829450
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi neznajka!

Ну уже по определению SYS(2007) (без дополнительных параметров добавленыых в
VFP8) может выдать лишь 65535 разных значений - чего-же от него ожидать то
:) Конечно будут повторения - достаточно задать > 65535 разных комбинаций,
чтобы 100% получить повторение :) реально повторения начнутся гораздо
раньше - но я уже подзабыл эту математику, потому не скажу более точно...

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
А кто-нибудь знает подробности SYS(2007)?
    #32830878
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Igor Korolyov:
Да я и сам это понимаю - формулы перестановок и сочетаний еще слегка помню. Из этих же формул, кстати, следует и неизбежная повторяемость MD5-кодирования, правда - "петля" повторений очень большая...
...
Рейтинг: 0 / 0
А кто-нибудь знает подробности SYS(2007)?
    #32831379
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi neznajka!

Ну да - таковы ВСЕ хэш-алгоритмы - просто число возможных выходных значений,
а также собственно то как "перемешиваются" исходные данные влияет на
вероятность повторения.

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
А кто-нибудь знает подробности SYS(2007)?
    #32832655
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Igor Korolyov:
Да меня-то эта тема больше из любопытства занимала - познакомиться с теорией, чтобы "уразуметь": можно ли организовать MD5-алгоритм средствами VFP? Но, благодаря oleg_km, пришел к выводу, что и делать-то это, по сути, НЕзачем - ведь все прекрасно подшивается под Fox, без особого напряга. Теперь у меня на повестке дня другая проблема - реорганизация структур нескольких БД в целях более рационального (компактного) размещения строчных полей, содержащих данные, длина которых колеблется в значительных пределах - от 12 до 149 символов (например, названия фирм). Не все, оказывается, можно решать через memo, особенно при необходимости вести индексный поиск по такому полю. Но это - выходит за рамки данной темы. А начинать новую - пока не стОит, сначала посоображаю немного сам.
...
Рейтинг: 0 / 0
А кто-нибудь знает подробности SYS(2007)?
    #32832996
karly™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пример организации словаря для поиска по отдельным словам здесь
Вполе работоспособная модель в том числе для memo-полей
...
Рейтинг: 0 / 0
А кто-нибудь знает подробности SYS(2007)?
    #32833577
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi neznajka!

Я не знаю чего тебе oleg_km прислал (через NNTP только ссылка видна, потому
я не закачал) - что-то меня смущает цифра в 29 Кб - чего он туда напихал
непонятно :)
Вообще-то 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.
? GetMd5Hash("Привет!")

FUNCTION GetMd5Hash
LPARAMETERS tcInput
#DEFINE dnPROV_RSA_FULL  1 
#DEFINE dnCALG_MD5      0x8003
#DEFINE dnHP_HASHVAL    0x0002
DECLARE INTEGER CryptAcquireContext IN WIN32API INTEGER @, STRING, STRING, 
INTEGER, INTEGER
DECLARE INTEGER CryptCreateHash IN WIN32API INTEGER, INTEGER, INTEGER, 
INTEGER, INTEGER @
DECLARE INTEGER CryptHashData IN WIN32API INTEGER, STRING, INTEGER, INTEGER
DECLARE INTEGER CryptGetHashParam IN WIN32API INTEGER, INTEGER, STRING @, 
INTEGER @, INTEGER
DECLARE INTEGER CryptDestroyHash IN WIN32API INTEGER
DECLARE INTEGER CryptReleaseContext IN WIN32API INTEGER, INTEGER
LOCAL lnProviderHandle, lnHashHandle, lcHash, lnHashLen
lnProviderHandle =  0 
lnHashHandle =  0 
lcHash = SPACE( 16 )
lnHashLen =  16 
IF CryptAcquireContext(@m.lnProviderHandle, "", "", dnPROV_RSA_FULL, 
0xF0000000) =  0 
 ERROR "Ошибка получения CryptoAPI контекста"
 RETURN ""
ENDIF
IF CryptCreateHash(m.lnProviderHandle, dnCALG_MD5,  0 ,  0 , @m.lnHashHandle) = 
 0 
 ERROR "Ошибка создания хендла хеша"
 CryptReleaseContext(m.lnProviderHandle,  0 )
 RETURN ""
ENDIF
IF CryptHashData(m.lnHashHandle, m.tcInput, LEN(m.tcInput),  0 ) =  0 
 ERROR "Ошибка хеширования"
 CryptDestroyHash(m.lnHashHandle)
 CryptReleaseContext(m.lnProviderHandle,  0 )
 RETURN ""
ENDIF
IF CryptGetHashParam(m.lnHashHandle, dnHP_HASHVAL, @m.lcHash, @m.lnHashLen, 
 0 ) =  0 
 ERROR "Ошибка получения хеша"
 CryptDestroyHash(m.lnHashHandle)
 CryptReleaseContext(m.lnProviderHandle,  0 )
 RETURN ""
ENDIF
CryptDestroyHash(m.lnHashHandle)
CryptReleaseContext(m.lnProviderHandle,  0 )
RETURN LOWER(STRCONV(m.lcHash,  15 ))
ENDFUNC

Теперь у меня на повестке дня другая проблема - реорганизация структур
нескольких БД в целях более рационального (компактного) размещения строчных
полей
А какая цель? Чтоб места меньша занимало? (сколько ж у тебя записей то?) Или
чтобы быстрее работало? В принципе если тебя уже достают такие проблемы, то
наверное пора переходить на какой-нить SQL сервер - ибо в фоксе нереально
сделать красивую и быструю эмуляцию VARCHAR полей...

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
А кто-нибудь знает подробности SYS(2007)?
    #32833745
oleg_km
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ровно это и запихал. Просто была чья-та dll ну и она естественно меньше 29kb быть не может.
...
Рейтинг: 0 / 0
А кто-нибудь знает подробности SYS(2007)?
    #32833908
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi oleg_km!

Фоксовая dll с таким кодом? А чего тогда не исходник кинул?

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
А кто-нибудь знает подробности SYS(2007)?
    #32834575
oleg_km
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да какая фоксовая. На сях, наверное. Это не моя, скачал где-то. Моя внутри моей dll, но она большая, лень выдирать
...
Рейтинг: 0 / 0
А кто-нибудь знает подробности SYS(2007)?
    #32835178
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем за участие. Не ожидал, честно говоря. Кодировка в системе MD5 мне очень пригодилась. Но не для данного случая. По уточненным условиям – здесь необходимо было:
- организовать компактное хранение строчных данных, имеющих значительный разброс длины;
- вести по ним ИНДЕКСНЫЙ поиск:
- также вести поиск по шаблону с применением % и _ ;
- и еще масса дополнительных условий…
Короче, для решения данной проблемы оказалось недостаточно возможностей организации хранения данных в виде плоских таблиц. Пришлось (для данного случая) отказаться от DBF-формата и вообще использовать Adaptive Server Anywhere от SYBASE. Но – это, действительно, частный случай, который я не хочу здесь описывать, поскольку являюсь ярым приверженцем FOX’а.
И ссылка от karly™ (http://www.foxclub.ru/sol/index.php?act=view&id=443) действительно оказалась полезной. Большое спасибо. Прошу считать тему закрытой. Если, конечно, ни у кого нет личного интереса в продолжении.
Удачи!
С уважением,
Третьяченко Николай, aka Neznajka.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / А кто-нибудь знает подробности SYS(2007)?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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