Расчет CRC32

26.04.12

Разработка - Универсальные функции

Расчет CRC32 без использования внешних компонент

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Расчет CRC32
.ert 42,50Kb
40
40 Скачать (1 SM) Купить за 1 850 руб.

Расчет CRC32 без использования внешних компонент.

Алгоритм можно ускорить, но меня устраивает и так, как есть.

У меня используется для небольших объемов данных.

Легко переносится на 8-ку

См. также

Универсальные функции Программист Платформа 1С v7.7 Россия Абонемент ($m)

В библиотеку собраны различные функции по работе с документами, журналами, типами данных, строками, датой и временем, таблицами значений, Excel, файлами, XML, JSON, Http-сервисами, SMTP серверами и т.п.

1 стартмани

22.12.2023    1887    17    user706545_kseg1971    0    

6

Универсальные функции Программист Платформа 1С v7.7 1C77 Россия Бесплатно (free)

Получение реквизитов контрагентов из 1С:Контрагент для старых конфигураций под 1с 7.7.

25.04.2022    2648    zhenyat    7    

8

Универсальные функции Программист Платформа 1С v7.7 Россия Бесплатно (free)

Функция выводит таблицу значений в табличный документ. (v7.7) Особенно полезно при отладке. Не нужно вносить изменения в код, вызываем функцию как вычисляемое выражение при останове. Если таблица обрабатывается в несколько этапов, можно вывести её после каждого и визуально проследить эволюцию.

30.06.2021    5844    Zoltan_Black    11    

4

Универсальные функции Системный администратор Программист Платформа 1С v7.7 1C77 Абонемент ($m)

Установка принтера по умолчанию в 1С 7.7. Обработка может быть полезна в том случае, когда нужно установить принтер по умолчанию, а доступа к рабочему столу нет (например, терминальный режим без рабочего стола или remoteApp)

1 стартмани

13.02.2019    14357    4    alsen    3    

5

Универсальные функции Программист Платформа 1С v7.7 1C77 1С:Комплексная 7.7 Абонемент ($m)

Предлагается набор функций 1с 7.7 для формирования строки json стандартными средствами.

1 стартмани

10.12.2018    11343    malovandrey    7    

19

Универсальные функции Работа с интерфейсом Программист Платформа 1С v7.7 1C77 Россия Абонемент ($m)

В статье дано описание создания индикатора на форме в среде разработки 1С:Предприятие 7.7 исключительно типовыми средствами.

1 стартмани

27.09.2016    19021    2    HAMMER_59    6    

2
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Angeros 27.04.12 03:51 Сейчас в теме
Подскажите для чего это можно применить? И каков принцип кодирования в crc32?
2. GAlexis 5 27.04.12 07:45 Сейчас в теме
Алгоритм CRC32 устроен так, что небольшие изменения в ДАННЫХ вызывают большие изменения в подписи CRC32.
Я использую для сверки бумажных и электронных накладных, печатая CRC32 на накладной в виде штрихкода.
3. Famza 85 27.04.12 08:42 Сейчас в теме
(2) Штрих-код - это конечно хорошо, а как происходит сверка штрих-кодов у вас?
4. GAlexis 5 27.04.12 08:50 Сейчас в теме
Извиняюсь не правильно понял вопрос первый раз.
На накладной в виде ШК есть номер накладной и ШК CRC32 табличной части.
Сканируется ШК CRC32 потом Номер накладной повторно вычисляется CRC32 сравнивается.
5. Gulak 02.05.12 11:06 Сейчас в теме
6. Johny_v 141 25.05.12 12:31 Сейчас в теме
А ты проверял возникновение коллизий?
Например если кодировать уид 20тыс. элементов, то сколько будет разных элементов с одинаковым CRC32?
7. GAlexis 5 25.05.12 13:22 Сейчас в теме
Алгоритм предназначен для контроля ошибок, а не для кодирования, на сколько я понимаю.
Честно говоря мне не совсем ясно для чего каждый отельный УИД нужно кодировать CRC32.

Алгоритм CRC32 придуман не мной и мной не исследовался.
Возможно эта информация Вам поможет:
Wikipedia CRC32
В частности там указано что, CRC32 используется в Ethernet, FDDI, iSCSI ...

Если Вам нужна меньшая вероятность совпадений смотрите в сторону MD5 и т.п.
8. Johny_v 141 25.05.12 16:38 Сейчас в теме
Спасибо за ссылку, я смотрел эту статью.
md5 однозначно не подходит.
Слишком большое выходное значение получается. Мне нужно получить максимум 10 символов.
Из найденного подходят методы Adler32 и CRC32.

Кстати первый работает очень быстро и просто программируется, но у него возможны коллизии.
Проверял на 20 тыс. элементов получилось около 900 ошибок (разных элементов с одним хешем).
С CRC32 я думаю меньше будет.
9. GAlexis 5 27.05.12 11:46 Сейчас в теме
Проверял на 20 тыс. элементов получилось около 900 ошибок

Зачем нужно кодировать каждый УИД отдельно?
10. Johny_v 141 28.05.12 09:24 Сейчас в теме
Нужно для каждого элемента получить уникальный код который пользователь должен будет ввести вручную (поэтому и ограничение по длине кода). Он должен быть не по порядку, чтобы исключить подбор вручную. Кончено может совпасть так, что код будет по порядку, но вероятность меньше.
11. Johny_v 141 28.05.12 10:05 Сейчас в теме
После проверки 18000 элементов
Adler32 выдал 652 коллизии
CRC32 выдал 4 коллизии
Выводы: метод не подходит для этой задачи. Он не обеспечивает необходимой уникальности.
Буду искать другие способы.
12. Johny_v 141 28.05.12 10:11 Сейчас в теме
Кстати, для проверки сделал внешнюю компоненту.
18тыс элементов за 1 секунду закодировала.
Если нужна могу скинуть.
13. GAlexis 5 31.05.12 07:59 Сейчас в теме
После проверки 18000 элементов
Adler32 выдал 652 коллизии
CRC32 выдал 4 коллизии
Выводы: метод не подходит для этой задачи. Он не обеспечивает необходимой уникальности.

Ну и в принципе если ты большую строку преобразуешь в меньшую и по одной нельзя воссоздать другую в точности, то ты неизбежно получишь коллизии.
14. maksim32 08.01.13 22:52 Сейчас в теме
Johny_v, да, кинь компоненту пожалуйста!!! Очень нужна! Спасибо
15. vvr908 451 06.02.15 22:54 Сейчас в теме
Автору спасибо!

Есть один нюанс:
Я скачал обработку и переписал код под 8-ку. Потом решил проверить, совпадет ли расчет с методом ХешированиеДанных() из платформы 8.3.
Результат не совпал.

Похоже, что в платформе используется алгоритм CRC32B (расчет из платформы совпал с расчетом онлайн-конвертера CRC32B http://hash.online-convert.com/crc32b-generator). А какой алгоритм используется в этой обработке, я пока не успел выяснить - но, похоже, не CRC32B. С аналогичным онлайн-расчетом CRC32 он тоже не совпадает.

Так что не знаю, используйте на свой страх и риск. Хотя может, конечно, я криво код переписал под 8-ку...
16. GAlexis 5 16.03.15 08:14 Сейчас в теме
(15) vvr908, Прошу прощения за поздний ответ, но у меня все под 7.7 совпадало со всеми генераторами. В 8.3 есть функция расчета CRC она не устраивает? Могу переписать код под 8 ку.
Оставьте свое сообщение