#0
by Zixxx
Как правильнее получить уникальный хеш длиной в 16 символов из уникального идентификатора 1с? Необходимо для интеграции. Есть скрипты для кодирования по алгоритму они возвращают хеш в 32 символа, есть что-нибудь похожее для хеша в 16 символов. И на сколько правильно будет брать первые 16 символов от 1с-ного идентификатора?
#3
by DirecTwiX
Бери первые 16 из хеша для "кодирования по алгоритму". Либо сложи посимвольно две половины. Первые 16 символов от УИД тоже как хэш должны пойти. Посчитать хэш для журнала документов, сгруппировать и посмотреть разброс совпадений.
#5
by Serginio1
Неправильно. Вообще Хэш это либо байтовый масив либо uint или UInt64 Можно проиксорить 2 части либо например взять пример вычисления хэша для строки public override unsafe int GetHashCode { } }
#6
by ptiz
"они возвращают хеш в 32 символа" - может я чего-то не понял, но изначально УИД в 1С как раз - 32 символа.
#7
by DirecTwiX
Ммм.. Что неправильного увидел?) Хешем может быть почти всё, что на ум придёт. Один символ, одна цифра и т.д. УИД - не очень под хеш подходит, т.к. он уникальный) Но тут уже лучше автора спросить, зачем ему понадобился хеш как таковой)
#8
by Serginio1
Хэш это набор бит. Смысл его в том, что бы перемешать биты и уменьшить емкость значения при этом получить минимальную вероятность появления коллизий разных значений с одинаковым хэшем. Или Хеширование (иногда «хэширование», англ. hashing) — преобразование по детерминированному алгоритму входного массива данных произвольной длины в выходную битовую строку фиксированной длины. Такие преобразования также называются хеш-функциями или функциями свёртки, а их результаты называют хешем, хеш-кодом или сводкой сообщения (англ. message digest). Хорошая хеш-функция должна удовлетворять двум свойствам: минимизировать количество коллизий УИД неуникален. Есть вероятность коллизий. А так ему видно хочется уменьшить разрядность хэша
#16
by DirecTwiX
И ты так и не ответил на вопрос, что неправильного в увидел. Либо я не заметил ответа) >минимизировать количество коллизий Нет же)
#17
by Serginio1
Хотя уникальность каждого отдельного GUID не гарантируется, общее количество уникальных ключей настолько велико (2128 или 3,4028?1038), что вероятность того, что в мире будут независимо сгенерированы два совпадающих ключа, крайне мала. В 1С с их генерацией УИД вероятность больше
#18
by Serginio1
Неправильно брать первые 16 символов. Нужно брать все 32 хэшировать их в 12 байт и переводить в Base64. Вот так будет правильно. Тогда вероятность коллизий резко уменьшится. Но для его задачи лучше всего 11
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Как уменьшить строку в 50 символов до 20 символов?
- Получение MD5 хеша строки
- Сформировать хеш документа
- copyhere("folde",16); код 16 не работает!
- 1С и хеш с мд5 у файла
- v7: какая ВК мне даст хеш строки md5 равную функции md5 в php?
- {ОбщийМодуль.Хеш.Модуль(267)} execution exceeded the specified timeout period.
В этой группе 1С
- Реквизит типа таблица значений в тонком клиенте
- Очистка поля при изменении другого реквизита
- УТ 11. Как приязать ДополнительныеРеквизитыИСведения к конкретному типу спр.?
- ВИД какой драйвер ODBC задать для excel 14 (х32)?
- v8: Начисление и выплата зарплаты в УТ 10
- БП 2.0 Округление НДС 99/68.02 После округления есть остаток
- Торговля ИТС без НДС
- ЗУП 3.0, расчет среднего заработка, "Норма дней по произв. калегдарю", помогите
- Как называется, когда в модуле много лишних процедур?
- Отправить для обработки (POST)
- глЗначениеПеременной("глТекущийПользователь") или ПараметрыСеанса.ТПользователь?
- обновление нетиповой БП 2 на БП3. Нужен совет.
- Перенос из Комплексной 4.5 (7.7) в КА 1.1 (8.2)
- ТаблицаЗначений управляемые формы
- Ошибка "Аналитика учета по партнерам" УТ11
- Прямоугольники. Разбиение
- Открыта форма программно или интерактивно
- Задваиваются платежки в телебанке.
- Прекратить начисление материальной выгоды по договору займа УПП 1.3
- v7: C# и ?.7 - как получить OLE объект