Выбирал название между libcrypto и libhash, в итоге получилось libcrash.
Из реализованного crc32, md4, md5, sha1, sha2 (224, 256, 384, 512).
В sha2 работа с 64-битными числами идёт через mmx регистры.
Пример прилагается.
Осторожно, GPL3+. Я вас предупреждал.
libcrash -- cryptographic hash (and other) functions
Почему не LGPL, если не секрет?
В любом случае, использование данной библиотеки требует кода программ под лицензией GPLv3. Не уверен насчет лицензии библиотек, которые "поставляются" с C--, что может вызвать определенные проблемы.
В любом случае, использование данной библиотеки требует кода программ под лицензией GPLv3. Не уверен насчет лицензии библиотек, которые "поставляются" с C--, что может вызвать определенные проблемы.
Всё просто: если я делюсь с человеком, то хочу, чтобы и он со мной поделился в ответ. А если человек изначально не намерен делиться со мной, то почему я должен делиться с ним? Иными словами, как вы ко мне, так и я к вам.
Насколько я понял из этой картинки, использование других LGPL библиотек допустимо. В частности libs-dev (libini, libimg, ...) распространяются под LGPL2.1+.
Насколько я понял из этой картинки, использование других LGPL библиотек допустимо. В частности libs-dev (libini, libimg, ...) распространяются под LGPL2.1+.
Я не знаю, насколько хорошо отнесутся авторы библиотек к обновлению лизцензии с GPLv2 до GPLv3. В остальном мне твой подход нравится
Если ты линкуешь программу П с библиотеками Б1(LGPL*) и Б2(GPL3+), то единственное условие -- GPL3+ для П.
Менять лицензию libs-dev не нужно, они ведь под LGPL, а не GPL. Проблемы только с GPLv2 only.
Менять лицензию libs-dev не нужно, они ведь под LGPL, а не GPL. Проблемы только с GPLv2 only.
Супер, поздравляю, молодец!
Спасибо. Но там ещё много работы: скорости бы добавить. Начиная с sha384 идёт работа с 64-битными числами, и на ней мой код даже с mmx в разы сливает 64-битному сишному, у которого в распоряжении 64-разрядные регистры общего назначения с нативными rol, например, и прибавлением регистра к памяти.
Куча "cld" ни одного "std"Wildwest wrote:http://habrahabr.ru/post/219859/
#
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:
Вывод: "нинужно", любой вменяемый компилятор сделает лучше.
A quite big update has arrived in #9216.
Current state:
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).
Who is online
Users browsing this forum: No registered users and 8 guests