Добро пожаловать, Гость. Пожалуйста авторизуйтесь здесь.
FGHIGate на GaNJa NeTWoRK ST@Ti0N - Просмотр сообщения в эхоконференции SU.FIDOTECH
Введите FGHI ссылку:


Присутствуют сообщения из эхоконференции SU.FIDOTECH с датами от 16 Jul 13 03:28:00 до 16 Apr 24 03:28:00, всего сообщений: 266
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 16 из 266 ========================================= SU.FIDOTECH =
От   : Mithgol the Webmaster            2:5063/88          15 Feb 14 11:34:20
Кому : All                                                 15 Feb 14 11:34:20
Тема : Употребление хэша CRC-32 в базах JAM (в файлах .JLR и .JHR и .JDX)
FGHI : area://SU.FIDOTECH?msgid=2:5063/88+52ff217d
На   : area://SU.FIDOTECH?msgid=2:5063/88+529c2567
= Кодировка сообщения определена как: CP866 ==================================
==============================================================================

К своему величайшему сожалению, за два с половиною месяца так и не удалось мне
получить в Фидонете ответ на отправленное 2 декабря прошлого (2013) года
сообщение ── и пришлось самому искать и найти разгадку изложенной там загадки:

MtW> У меня GoldED+ (на самом деле GoldED-NSF, но это не важно: эта часть
MtW> алгоритма в нём скорее всего не изменялась) создаёт .JLR-файлы,
MtW> в которых первые четыре байта в шестнадцатеричной системе счисления
MtW> имеют вид 7C 34 12 5B, и следующие четыре байта также имеют вид
MtW> 7C 34 12 5B.

MtW> По стандарту JAM первые четыре байта должны быть хэшем CRC-32 от имени
MtW> пользователя, взятого в нижнем регистре (что означает, что буквы 'A-Z'
MtW> в имени становятся буквами 'a-z', но больше никаких изменений),
MtW> а вторые четыре байта должны содержать уникальный идентификатор
MtW> пользователя.

MtW> Я так понимаю, что создатели GoldED+ решили, что CRC-32 ── достаточно
MtW> уникален для идентификатора, и этим объясняется подобие второй четвёрки
MtW> байтов и первой.

MtW> А вот почему именно 7С 34 12 5B ── то есть число 0x5b12347c (в записи
MtW> языка Си или JavaScript) ── этого я никак не могу себе объяснить.

MtW> В конфигурации GoldED-NSF первое значение UserName стоит Mithgol
MtW> the Webmaster, однако CRC-32 от строки 'mithgol the webmaster' будет
MtW> 0xa4edcb83.

MtW> В конфигурации GoldED-NSF параметру RegisterName задано значение SysOp,
MtW> однако CRC-32 от строки 'sysop' будет 0x8ab05249.

MtW> Если от строки 'mithgol' брать CRC-32, то выходит 0x41cfb294.

MtW> Откуда тогда 0x5b12347c берётся-то?

MtW> В качестве постскриптума прибавлю, что в файле http://j.mp/1dKs6Jf
MtW> строка 70 использует WideUsername[0] ── а это что же, не первое
MtW> значение UserName разве?

После ряда экспериментов удалось установить, что GoldED-NSF (а также, весьма
вероятно, и все остальные программы, работающие с JAM-базами в Фидонете) кладут
в JAM-базу (не только в .JLR, но и в .JHR, и в .JDX) не сам хэш CRC-32, а итог
его побитового отрицания (или, что то же самое, итог вычитания из наибольшего
тридцатидвухбитного числа, двоичная запись которого состоит из 32 единиц).

Скажем, хэш CRC-32 от пустой строки равняется нулю, тогда как в поле REPLYcrc
в структуре MessageFixedHeader внутри JHR-файла при отсутствующем кладже REPLY
будет стоять не ноль, а число 4294967295 (оно получается, если вычесть единицу
из итога возведения двойки в тридцать вторую степень), то есть наибольшее из
тридцатидвухбитных чисел.

Соответственно, хотя хэш от строки 'mithgol the webmaster' будет 0xa4edcb83,
в JLR-файле стоит число 0x5b12347c ── сумма их составляет опять же 4294967295.

Этим объясняется то вышеизложенное обстоятельство, которое я никак не мог себе
ранее объяснить и дошёл даже до того, что плюнул на обработку имён в JLR-файле.

Теперь я наконец могу двигаться дальше; например, могу теперь запрограммировать
быстрый поиск сообщения по его MSGID, используя CRC-32 из заголовка, что будет
способствовать быстрой обработке URLов FGHI, содержащих параметр 'msgid=...'.

Жаль только, что за прошедшие два с половиной месяца мне не удалось на этот
вопрос получить ответ от фидонетовского сообщества, хотя, казалось бы, вопрос
был опубликован в Ru.FTN.Develop и Ru.GoldED и SU.FidoTech, то есть в трёх
эхоконференциях, наиболее ему релевантных, наиболее соответствующих ему. Чем
объяснить такое ── оскудением ли общественного знания о стандартах хранения
фидопочты, личным ли неприязненным ко мне отношением, которое заставило знающих
воздержаться от ответа ── я ещё не решил.


* изначально написано в эхоконференцию Ru.FTN.Develop
* также было отослано в эхоконференцию Ru.GoldED
* также было отослано в эхоконференцию SU.FidoTech
* также было отослано в эхоконференцию Ru.Fidonet.Today


Фидонет будет великим и гипертекстовым!    [Ru.Mozilla]     http://Mithgol.Ru/
Mithgol the Webmaster.                    [Братство Нод] [Team А я меняю subj]

... Чужая душа потёмки. Особенно, когда её нет.            (пословица аpанков)
--- Эшелону: монархические NMIC  NIOG IDB  MID/KL  NADIS NMI  SEIDM BNC  CNCIS
* Origin: ── А остальное?... ── А остальное карбиды вольфрама!!.. (2:5063/88)

К главной странице гейта
Powered by NoSFeRaTU`s FGHIGate
Открытие страницы: 0.028850 секунды