2026-08-12T04:58:12+00:00
Hash Calculator 6.0
hc и l2h переписаны на Zig — не все, многие алгоритмы остались в реализации на C (и даже ассемблере), на Zig переведено то, что реально быстрее работает (blake2 и sha3 алгоритмы). Набор алгоритмов и CLI hc сохранены относительно 5.x. При переписывании активно использовался (и далее будет использоваться) ИИ, но это не чистый вайб-кодинг проект, — ИИ используется в основном для рутины, для поиска ошибок и помощи в написании тестов.
Платформы
| Платформа | Target | GPU |
|---|---|---|
| Windows | x86_64-windows-msvc | CUDA + OpenCL |
| Linux | x86_64-linux-gnu | CUDA + OpenCL |
| Linux | aarch64-linux-gnu | CUDA (новая) |
| Linux | x86_64-linux-musl | — (новая) |
| Linux | aarch64-linux-musl | — (новая) |
| FreeBSD | x86_64-freebsd-none | — (новая) |
| macOS | x86_64-macos-none | — (новая) |
| macOS | aarch64-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