Расчет CRC32

26.04.12

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

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

Скачать файлы

Наименование Файл Версия Размер
Расчет CRC32
.ert 42,50Kb
40
.ert 42,50Kb 40 Скачать

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

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

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

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

См. также

Библиотека процедур и функций для технологической платформы "1С: Предприятие 7.7"

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

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

1 стартмани

22.12.2023    657    9    user706545_kseg1971    0    

4

1С 7.7 и новый 1С:Контрагент

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

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

25.04.2022    1820    zhenyat    7    

6

Печать таблицы значений в 1С 7.7 при отладке

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

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

30.06.2021    4399    Zoltan_Black    11    

2

Установка принтера по умолчанию для 1С 7.7

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

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

1 стартмани

13.02.2019    13286    4    alsen    3    

4

Формирование строки json в 1С: 7.7

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

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

1 стартмани

10.12.2018    10094    malovandrey    2    

18

Как создать индикатор в 1С:Предприятии 7.7

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

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

1 стартмани

27.09.2016    18672    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 84 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 140 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 140 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 140 28.05.12 09:24 Сейчас в теме
Нужно для каждого элемента получить уникальный код который пользователь должен будет ввести вручную (поэтому и ограничение по длине кода). Он должен быть не по порядку, чтобы исключить подбор вручную. Кончено может совпасть так, что код будет по порядку, но вероятность меньше.
11. Johny_v 140 28.05.12 10:05 Сейчас в теме
После проверки 18000 элементов
Adler32 выдал 652 коллизии
CRC32 выдал 4 коллизии
Выводы: метод не подходит для этой задачи. Он не обеспечивает необходимой уникальности.
Буду искать другие способы.
12. Johny_v 140 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 446 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 ку.
Оставьте свое сообщение