Page 1 of 1
libcrash -- cryptographic hash (and other) functions
Posted: Sun Dec 16, 2012 11:18 am
by dunkaist
Выбирал название между libcrypto и libhash, в итоге получилось libcrash.
Из реализованного crc32, md4, md5, sha1, sha2 (224, 256, 384, 512).
В sha2 работа с 64-битными числами идёт через mmx регистры.
Пример прилагается.
Осторожно, GPL3+. Я вас предупреждал.
Re: libcrash -- криптографические хэш функции и проч.
Posted: Sun Dec 16, 2012 12:16 pm
by SoUrcerer
Почему не LGPL, если не секрет?
В любом случае, использование данной библиотеки требует кода программ под лицензией GPLv3. Не уверен насчет лицензии библиотек, которые "поставляются" с C--, что может вызвать определенные проблемы.
Re: libcrash -- криптографические хэш функции и проч.
Posted: Sun Dec 16, 2012 2:03 pm
by dunkaist
Всё просто: если я делюсь с человеком, то хочу, чтобы и он со мной поделился в ответ. А если человек изначально не намерен делиться со мной, то почему я должен делиться с ним? Иными словами, как вы ко мне, так и я к вам.
Насколько я понял из
этой картинки, использование других LGPL библиотек допустимо. В частности libs-dev (libini, libimg, ...) распространяются под LGPL2.1+.
Re: libcrash -- криптографические хэш функции и проч.
Posted: Sun Dec 16, 2012 6:01 pm
by SoUrcerer
Я не знаю, насколько хорошо отнесутся авторы библиотек к обновлению лизцензии с GPLv2 до GPLv3. В остальном мне твой подход нравится
Re: libcrash -- криптографические хэш функции и проч.
Posted: Sun Dec 16, 2012 6:25 pm
by dunkaist
Если ты линкуешь программу П с библиотеками Б1(LGPL*) и Б2(GPL3+), то единственное условие -- GPL3+ для П.
Менять лицензию libs-dev не нужно, они ведь под LGPL, а не GPL. Проблемы только с GPLv2 only.
Re: libcrash -- криптографические хэш функции и проч.
Posted: Fri May 24, 2013 6:36 pm
by dunkaist
Добавил хэши
sha3 (keccak).
Пример crashtest.asm с svn, вычисляющий всевозможные хэши самого себя:
Re: libcrash -- криптографические хэш функции и проч.
Posted: Fri May 24, 2013 7:33 pm
by SoUrcerer
Супер, поздравляю, молодец!
Re: libcrash -- криптографические хэш функции и проч.
Posted: Fri May 24, 2013 7:49 pm
by dunkaist
Спасибо. Но там ещё много работы: скорости бы добавить. Начиная с sha384 идёт работа с 64-битными числами, и на ней мой код даже с mmx в разы сливает 64-битному сишному, у которого в распоряжении 64-разрядные регистры общего назначения с нативными rol, например, и прибавлением регистра к памяти.
Re: libcrash -- криптографические хэш функции и проч.
Posted: Fri Apr 18, 2014 10:02 pm
by Wildwest
Re: libcrash -- криптографические хэш функции и проч.
Posted: Fri Apr 18, 2014 10:14 pm
by 0CodErr
Куча "cld" ни одного "std"
#
and eax, edi ; ( state[i*8+k] & (1<<(7-j) )
#
cmp eax, 0 ; if ((state[i*8+k] & (1<<(7-j))) != 0) v ^= A[k*8+j] ???
#
jz .next_ji
#
jb .next_j
#
jmp .next_ki
#
align 4
#
.next_ki:
#
jb .next_i
#
jmp .end
#
.end:
ну и т.п.
Вывод: "нинужно", любой вменяемый компилятор сделает лучше.
Re: libcrash -- криптографические хэш функции и проч.
Posted: Fri Oct 15, 2021 4:27 am
by dunkaist
A quite big update has arrived in
#9216.
Current state:
- hashes: crc32 (still here),
md4, md5, sha1, sha2 (224, 256, 384, 512), sha3 (224, 256, 384, 512).
- macs: poly1305, hmac (sha2_256, sha2_512).
- ciphers: chacha20, aes256ctr, aes256cbc (with and without pkcs#5 padding).
- A relatively high-level and more low-level APIs (there are some comments in libcrash.asm).
- Now it's GPL2+, not GPL3+ (who cares but still).
As always, there are still a lot of things to improve (not mentioning speed, haha), but functionally it should be correct.