------------ Дoбавленo в 22.57:
А вот это для чего
_hi_CreateEvent(_Data, @onAcquire, _DoData("OK"));
Почему _DoData
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
И на кой черт для текста применяется блочный доступ
------------ Дoбавленo в 22.57: А вот это для чего
Почему _DoData |
|||
карма: 22 |
|
Ответов: 5446
Рейтинг: 323
|
|||
nesco, шифры - блочные, т.е. за раз шифруется блок определённой длины.
А почему DoData - а как надо? Я же говорю - для HiAsm писать не обучен... |
|||
карма: 1 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
iarspider писал(а): а как надо?Если просто OK вывести, то
А зачем в функции doCrypt куча телодвижений, почему не сразу криптование, согласно рыбе ------------ Дoбавленo в 23.42: В рыбе есть одна неточность -- нет очистки ключа CryptDestroyKey ------------ Дoбавленo в 23.46: И что такое PlainText_in и CypherText_in ------------ Дoбавленo в 23.48: Короче, поставь нормально задачу - есть то, то и то, надо на выходе пллучить -- это, это и это. И методы описать надо бы, что чего делать должно и что на выход попасть ------------ Дoбавленo в 23.51: И еще -- это очень срочно надо или может подождать до завтра, послезавтра |
|||
карма: 22 |
|
Ответов: 5446
Рейтинг: 323
|
|||
nesco, отвечаю:
1. В "рыбе" все те же дополнительные телодвижения (создание и вычисление хеша, создание ключа по хешу), что и в моём коде 2. В строке 72 кода надо из верхней точки Key (забыл вчера добавить ) считать пароль (pascal-строку) и сделать из неё ANSI-строку (NULL-terminated). В той же строке вместо второго "{???}" нужно подставить длину пароля. 3. В строке 79 (которая, очевидно, расползётся на несколько строк) нужно считывать блоками (по 64 байта) данные для шифрования (строку? поток? как там правильнее с т.з. стиля) с Plaintext_in. Делаем хитрый финт ушами:
4. Когда всё зашифровали - выдаём содержимое буфера в поток (и сохраняем для выдачи на нижнюю точку Cyphertext). Обратную процедуру я и сам доделаю по образцу. ------------ Дoбавленo в 11.07: И да - это не очень срочно. |
|||
карма: 1 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
iarspider писал(а): Обратную процедуру я и сам доделаю по образцуНадо все сразу делать, а то правильность шифрования/дешифрования фиг проверишь iarspider писал(а): нужно считывать блоками (по 64 байта)Почему именно 64, почему не 512, откуда эта цифра ------------ Дoбавленo в 11.43: Да, а на каком типе кодирования проверть будем PROV_RSA_FULL: ProvTypeToStr := 'RSA full provider';
PROV_RSA_SIG: ProvTypeToStr := 'RSA signature provider'; PROV_DSS: ProvTypeToStr := 'DSS provider'; PROV_DSS_DH: ProvTypeToStr := 'DSS and Diffie-Hellman provider'; PROV_FORTEZZA: ProvTypeToStr := 'Fortezza provider'; PROV_MS_EXCHANGE: ProvTypeToStr := 'MS Exchange provider'; PROV_RSA_SCHANNEL: ProvTypeToStr := 'RSA secure channel provider'; PROV_SSL: ProvTypeToStr := 'SSL provider'; ------------ Дoбавленo в 11.48: Насколько я понял, то использовать будем PROV_RSA_FULL Однако на любом компьютере с Windows можно найти Microsoft Base Cryptographic Provider, относящийся к уже известному нам типу PROV_RSA_FULL
... По составу функций и обеспечивающих их алгоритмов криптопровайдеры подразделяются на типы. Например, любой CSP типа PROV_RSA_FULL поддерживает как шифрование, так и цифровые подписи, использует для обмена ключами и создания подписей алгоритм RSA, для шифрования — алгоритмы RC2 и RC4, а для хеширования — MD5 и SHA А остальные параметры какие, в рыбе -- RC4 и SHA, а почему не другие |
|||
карма: 22 |
|
Ответов: 5446
Рейтинг: 323
|
|||
nesco, если сделаешь сам - будет гут.
64 - это размер блока, взят из документации MSDN (и бережно скопированное в таблицу в моём 2м посте в этой теме.). Можно любое число, кратное размеру блока. PROV_XXX - это не тип кодирования, а криптопровайдер (набор криптографических функций). Использовать будем "Microsoft Enhanced Cryptographic Provider v1.0" (там больше ассортимент). SHA можно (нужно - так как для SHA надо ещё подсмотреть значение константы) на MD5 заменить. Список шифров - в таблице на первой странице. Есть ещё поточные шифры (тот же RC4), там проще делается - сразу весь поток загоняется с EOF = TRUE. Шифр будет пользователем выбираться (когда - и если - Dilma одобрит включение этого кода в компонент Cryptography) |
|||
карма: 1 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
iarspider писал(а): Есть ещё поточные шифры (тот же RC4)Кстати, в рыбе используется поблочное кодирование поточного шифра -- {создаем ключ на основании пароля для потокового шифра RC4}
CryptDeriveKey(hProv, CALG_RC4, hash, 0, @key); Что странно и не вяжется с твоим iarspider писал(а): сразу весь поток загоняется с EOF = TRUE------------ Дoбавленo в 14.11: Так может остановимся на поточном шифре, нафиг нам поблочный |
|||
карма: 22 |
|
Ответов: 5446
Рейтинг: 323
|
|||
nesco, "пусть расцветут все цветы". Про RC4 - посмотри код [url=http://forum.ixbt.com/topic.cgi?id=40:3020#5]тут[/url].
|
|||
карма: 1 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
А ничего, что строка будет содержать служебные символы Я нашел код, где результирующая строка специально преобразуется в HEX, что бы исключить служебные символы и иметь только чистый текст.
Короче, я тебе делаю шифратор по алгоритму RC4, дальше думаешь сам |
|||
карма: 22 |
|
Ответов: 5446
Рейтинг: 323
|
|||
nesco, а нынешний Crypt же тоже на выходе может давать "служебные символы", так что не надо ничего делать.
------------ Дoбавленo в 15.54: По поводу блочного чтения в "рыбе": это видимо сделано для экономии памяти. |
|||
карма: 1 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
iarspider писал(а): По поводу блочного чтения в "рыбе": это видимо сделано для экономии памятиСовременные компы без проблем могут сжать до 100 Mb, куда уж больше Ну давай попробуем по блокам сжимать ------------ Дoбавленo в 01.53: Вот первое приближение -- -- заменен на более предпочтительный вариант, тк не дает никакого преимущества, ни в скорости, ни в потреблении памяти -- ------------ Дoбавленo в 08.58: Вариант прямого безбуферного шифрования, для метода шифрования RC4 более прдпочтительный -- -- удален -- ------------ Дoбавленo в 10.11: Продолжение безбуферного варианта, убрана ненужна переменная -- cryptapi_3.sha |
|||
карма: 22 |
| ||
файлы: 1 | cryptapi_3.sha [8.5KB] [385] |
Ответов: 5446
Рейтинг: 323
|
|||
nesco, а чего ты дефолтного провайдера пользуешь, а не "Microsoft Enhanced Cryptographic Provider v1.0"?
|
|||
карма: 1 |
|
Разработчик
Ответов: 26163
Рейтинг: 2127
|
|||
iarspider писал(а): Microsoft Enhanced Cryptographic Provider v1.В Винде он и есть дефолтный, если я не ошибаюсь. Хотя, я могу и ошибаться, надо почитать внимательней ------------ Дoбавленo в 11.34: Действительно, лоханулся, держи версию с расширенным шифрованием -- cryptapi_enhanced.sha ------------ Дoбавленo в 11.40: Можно смело выкинуть проверку на пустой пароль и строку, оно и так шифрует, с пустым паролем -- cryptapi_enhanced_2.sha ------------ Дoбавленo в 11.41: Ну че, пойдет |
|||
карма: 22 |
| ||
файлы: 2 | cryptapi_enhanced.sha [8.5KB] [345], cryptapi_enhanced_2.sha [8.5KB] [348] |
Ответов: 5446
Рейтинг: 323
|
|||
nesco, сейчас сравню работу с C-шной версией. Вопрос сразу: а нафига ты Wide-версию используешь, у нас же unicode-ом в четвёрке и не пахнет?
|
|||
карма: 1 |
|
Ответов: 1891
Рейтинг: 110
|
|||
nesco, это все будет оформлено новым компонентом или останется как IC ?
|
|||
карма: 0 |
|