Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.06.2019, 14:32   #1
Jonny248
Новичок
Джуниор
 
Регистрация: 28.06.2019
Сообщений: 2
По умолчанию CryptoAPI | РСА шифрование

Приветствую всех. Пытаюсь шифровать текст при помощи RSA. Имеются следующие вопросы :

1. Дабы узнать размер данных в зашифрованном виде - я передаю в функцию CryptEncrypt изначальный размер данных, пример :

Код:
CryptEncrypt(hCryptKey, NULL, true, 0, NULL, &dwEnc, 0)
В переменную dwEnc попадает размер данных в зашифрованном виде. И этот размер статичен в зависимости от размера рса ключей.

Допустим, при RSA ключах в 4192 бита - это 512 байт, 2048 бит - 256, и т.п. Каков смысл тогда от получения размера через CryptEncrypt, если он статичен?

2. Как я написал выше, в зависимости от размера ключа возвращается EncryptedSize. И CryptEncrypt выдаёт неизвестную ошибку при попытке шифрования данных размером больше этого числа. Почему?

3. В мсдн написано, что CryptEncrypt не является потокобезопасной. Мне требуется быстро зашифровать файлы в определённых папках в несколько потоков без поломки файлов. Какие варианты выхода из этой ситуации есть?
Jonny248 вне форума Ответить с цитированием
Старый 28.06.2019, 14:55   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,770
По умолчанию

Цитата:
Сообщение от Jonny248 Посмотреть сообщение
Дабы узнать размер данных в зашифрованном виде
Дабы узнать размер выходных данных/блока

Цитата:
Сообщение от Jonny248 Посмотреть сообщение
я передаю в функцию CryptEncrypt изначальный размер данных
И плевать она на него хотела. Она в результате этого вызова туда только пишет.

Цитата:
Сообщение от Jonny248 Посмотреть сообщение
И этот размер статичен в зависимости от размера рса ключей.
Точно. Алгоритм такой.

Цитата:
Сообщение от Jonny248 Посмотреть сообщение
Каков смысл тогда от получения размера через CryptEncrypt, если он статичен?
Чтобы вы не запоминали константы, зависящие от алгоритма/способа кодирования/длины ключа/...

Цитата:
Сообщение от Jonny248 Посмотреть сообщение
И CryptEncrypt выдаёт неизвестную ошибку при попытке шифрования данных размером больше этого числа. Почему?
Потому что в зависимости от длины ключа рса оперирует блоками определенного размера.

Цитата:
Сообщение от Jonny248 Посмотреть сообщение
В мсдн написано, что CryptEncrypt не является потокобезопасной. Мне требуется быстро зашифровать файлы в определённых папках в несколько потоков без поломки файлов. Какие варианты выхода из этой ситуации есть?
Например, обратить внимание на первую плашку в мсдн:
Цитата:
Important This API is deprecated. New and existing software should start using Cryptography Next Generation APIs. Microsoft may remove this API in future releases.
и тыкнуть по ссылке. Либо использовать другие либы.
p51x вне форума Ответить с цитированием
Старый 28.06.2019, 17:53   #3
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от Jonny248 Посмотреть сообщение
Пытаюсь шифровать текст при помощи RSA.
На практике никто так не делает, отсюда все последующие траблы..
Цитата:
Сообщение от вики
Наиболее используемым в настоящее время является смешанный алгоритм шифрования, в котором сначала шифруется сеансовый ключ, а потом уже с его помощью участники шифруют свои сообщения симметричными системами.
Black Fregat вне форума Ответить с цитированием
Старый 29.06.2019, 00:45   #4
Jonny248
Новичок
Джуниор
 
Регистрация: 28.06.2019
Сообщений: 2
По умолчанию

Понял. Криптографические АПИ нового поколения использовать не могу, ибо отпадёт поддержка Windows XP. А использование критических секций в связке с дефолтным CryptoApi не поможет?
Jonny248 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CryptoAPI busyandr Visual C++ 0 24.02.2018 23:20
CryptoAPI JPCool Общие вопросы Delphi 6 04.07.2016 16:58
CryptoAPI. Шифрование сертификатом. Stilet Win Api 2 25.10.2014 18:19
CryptoApi Дмитрий5040 Общие вопросы Delphi 1 07.02.2013 02:36
CryptGenRandom,CryptoAPI tiger Помощь студентам 0 25.05.2011 00:10