Hash Calculator 6.0

hc и l2h переписаны на Zig — не все, многие алгоритмы остались в реализации на C (и даже ассемблере), на Zig переведено то, что реально быстрее работает (blake2 и sha3 алгоритмы). Набор алгоритмов и CLI hc сохранены относительно 5.x. При переписывании активно использовался (и далее будет использоваться) ИИ, но это не чистый вайб-кодинг проект, — ИИ используется в основном для рутины, для поиска ошибок и помощи в написании тестов.

Платформы

ПлатформаTargetGPU
Windowsx86_64-windows-msvcCUDA + OpenCL
Linuxx86_64-linux-gnuCUDA + OpenCL
Linuxaarch64-linux-gnuCUDA (новая)
Linuxx86_64-linux-musl— (новая)
Linuxaarch64-linux-musl— (новая)
FreeBSDx86_64-freebsd-none— (новая)
macOSx86_64-macos-none— (новая)
macOSaarch64-macos-none— (новая)

По сравнению с 5.x появились Linux musl, Linux aarch64 (gnu и musl), FreeBSD x86_64 и macOS (Intel и Apple Silicon). CUDA поддержан на Windows и Linux gnu варианте для архитектур x86_64 и aarch64. OpenCL — только x86_64 Windows и Linux gnu варианта. Linux musl вариант / macOS / FreeBSD / идут только с поддержкой CPU. OpenCL означает что теперь есть поддежка GPU от Intel, например Arc, а это многие ноутбучные встройки например в процессоры Meteor Lake и новее.

На Windows дополнительно собирается portable-архив под -Dcpu=core2 (без инсталлятора). В один архив кладутся и hc, и l2h. NSIS-инсталлятор (hc.setup.exe) содержит только полную (для процессоров haswell и новее) версию.

Пакеты: .deb / .rpm (gnu), .apk для Alpine (musl) и отдельный .apk с arch aarch64_cortex-a53 для OpenWrt (по сути тот же musl-бинарник).

GPU (brute force)

Было 12 CUDA-ядер. Стало 19 — покрывают 27 алгоритмов. Добавлен OpenCL-бэкенд: во время исполнения выбирается CUDA → OpenCL → CPU (ICD через dlopen / LoadLibrary, без жёсткой зависимости от libOpenCL / OpenCL.dll). На x86_64 Windows и Linux gnu поддержаны оба GPU-бэкенда; на aarch64-linux-gnu — только CUDA.

OpenCL ускоряет не все алгоритмы CUDA — только «лёгкие» ядра (иначе на Intel iGPU/OpenCL короткие подборы проигрывают multi-CPU):

  • MD5, MD4, NTLM, SHA-1, SHA-224, SHA-256, CRC32

Остальные GPU-алгоритмы (SHA-384/512, SHA-3/Keccak, MD2, RIPEMD, BLAKE2, TIGER/TIGER2, WHIRLPOOL) на OpenCL идут на CPU; на CUDA по-прежнему на GPU.

Новые алгоритмы с поддержкой GPU / CUDA (относительно 5.x):

  • SHA-3 и Keccak (sha-3-*, sha-3k-*)
  • BLAKE2b, BLAKE2s
  • RIPEMD-128 / 256 / 320 (160 уже был)
  • TIGER / TIGER2

Если GPU недоступен, brute force идёт на CPU.

hc

  • Вывод -c / checksum: один пробел между дайджестом и путём (совместимо с GNU *sum -c).
  • Обход каталога не останавливается на недоступных записях; учитывается --noerroronfind при ошибке открытия каталога.
  • Список алгоритмов в help отсортирован лексикографически.
  • CRC32C на aarch64: аппаратный путь или software fallback.
  • OpenSSL 4.0.1.

Алгоритмы те же (~50): MD2/4/5, SHA-1/2/3 (вкл. sha-3k-*), BLAKE2b/2s/3, RIPEMD-128/160/256/320, TIGER/TIGER2, WHIRLPOOL, GOST, HAVAL (12), SNEFRU, TTH, EDON-R, NTLM, CRC32/CRC32C.

l2h

Интерпретатор полностью переписан. Семантика: docs/l2h-semantics.md.

В C-версии limit / offset для вычисления хэша у части файла, а также обход подкаталогов заданного каталога по сути не работали — использовался всегда весь файл и сканировался только заданный каталог. Самые главные изменения:

  • появилась поддержка методов (см. ниже)
  • методы на файлах для окна хеша: f.offset(n) / f.limit(n);
  • обход подкаталогов: d.tree() / d.tree(n) (не where d.recursive == true);
  • обход с пропуском ошибок: d.skipErrors(), f.readable;
  • свойства path, name, size и фильтрация в where;
  • форматтеры записей: sfv(), checksum(), json() / jsonPretty(), csv(), spaced(), tabbed();
  • проверка хеша: f.md5('…');
  • Подсчет количества элементов в последовательностях: Seq.count();
  • -n / --syntax-check (разбор и проверка типов без реального выполнения запросов);
  • байтовые строки b'…' / b"…" с escapes (\xNN);
  • Поддержка связей между запросами в скрипте (через into).

Совместимость

  • CLI hc: флаги, формат вывода и коды возврата как в 5.6.x (кроме checksum: один пробел вместо двух).
  • Скрипты l2h стоит переписать: язык расширен и изменен.

Коммиты: v5.6.1...6.0.0

Дистрибутив: Hash Calculator Installler Windows x64