Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 28.06.2019, 15: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, 15:55   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,095
По умолчанию

Цитата:
Сообщение от 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, 18:53   #3
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,538
По умолчанию

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CryptoAPI busyandr Visual C++ 0 25.02.2018 00:20
CryptoAPI JPCool Общие вопросы Delphi 6 04.07.2016 17: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