В ядре появилось умножение без переносов — для хешей и криптографии
15.02.2026В наборе внутренних операций появилось умножение без переносов: перемножение многочленов по модулю два. Пока помечено как нестабильное.
Что это за операция
Обычное умножение переносит единицы в старший разряд. Умножение без переносов этого не делает: каждый разряд результата есть сложение по модулю два соответствующих разрядов множителей.
Порядок таких вычислений не важен, а одинаковые операнды взаимно уничтожаются. Отсюда область применения: вычисление хешей и кодов проверки целостности.
Зачем это нужно
Стандартные алгоритмы хеширования, построенные на таком умножении, раньше приходилось реализовывать вручную. Реализация — цикл с битовыми операциями, и она обязана быть точной: ошибка в одну операцию даёт другой хеш, то есть тихую порчу данных.
Встроенная операция сначала пробует машинную, если процессор её поддерживает, и только затем переходит к программной. То есть на подходящем процессоре это одна инструкция.
Оригинал
This defers to LLVM's llvm.clmul when available, and otherwise falls back to a method from the polyval crate.
Упоминаний: 1 · Просмотров: 2