Member 14511380 Ответов: 2

Как разработать программу шифрования Envelope на языке C++


Мне нужно разработать программу шифрования Envelope с использованием C++ для симметричного шифрования обычного текстового файла с помощью ключа AES, а затем ассиметричного шифрования ключа AES с помощью открытого ключа RSA.

Пожалуйста, предложите подходящее решение для этого.

Что я уже пробовал:

Я пробовал использовать <wincrypt.h> api, но есть некоторые проблемы, скорее всего, из-за используемых шагов.

Я получаю параметр неверный код ошибки 87 для CryptEncrypt. Кроме того, у меня есть следующие сомнения
1. Должен ли обычный текст быть в хэшированном формате ?
2. требуется ли ключ сеанса ?

KarstenK

Хэш-это форма контрольной суммы, и вы ничего не шифруете. Вам действительно нужно изучить основы для решения этой задачи.

Я думаю, что вы немного ленивый студент, сидящий сейчас на задании. :-O

2 Ответов

Рейтинг:
2

Richard MacCutchan

Взгляните на это API криптографии: следующее поколение - приложения для Windows | Microsoft Docs[^]. Он требует некоторого чтения, но довольно прост в использовании.


Рейтинг:
0

OriginalGriff

Я почти уверен, что вы не понимаете, что такое шифрование, и было бы неплохо, если бы вы узнали об этом до того, как начали "играть" с кодом.

Цитата:
1. Должен ли обычный текст быть в хэшированном формате ?
Нет. Если вы это сделаете, вы уничтожите данные в обычном текстовом файле и не сможете их восстановить. Видеть здесь: Расшифровка MD5 и SHA: почему вы не можете этого сделать[^]
Цитата:
2. требуется ли ключ сеанса ?
Нет. Если вы используете Ключ на основе сеанса, зашифрованные данные будут расшифровываться только во время текущего сеанса - когда сеанс закончится, ключ сеанса будет отброшен, и зашифрованные данные больше не будут восстанавливаться. Ключи являются фундаментальными для всех (нетривиальных) алгоритмов шифрования и необходимы как для шифрования, так и для дешифрования.

Кроме того, мы не можем диагностировать ваши проблемы из расплывчатого описания типа "параметр неверный код ошибки 87 для CryptEncrypt", потому что мы понятия не имеем, как выглядит ваш код!

Я бы посоветовал вам начать с изучения того, что такое шифрование и как его правильно реализовать, потому что это очень сложная тема, и если вы сделаете ошибки, то либо ваше шифрование будет означать, что ваши данные не могут быть восстановлены (это плохо), либо ваши данные небезопасны (это еще хуже). Это очень, очень легко испортить, если вы не знаете, что делаете (и в зависимости от того, что вы делаете с этим, оставляйте себя широко открытыми для судебного преследования и огромных штрафов за нарушение GDPR).

На твоем месте я бы начал читать здесь: узнайте, что такое шифрование и как его правильно реализовать - Google Search[^]


megaadam

Что может пойти не так, если вы используете <wincrypt.h> Для шифрования кода запуска МБР?

OriginalGriff

Пока это только ядерный код, никаких проблем вообще нет. Пароль моего банковского счета? Теперь у нас есть проблема ... :смеяться:

OriginalGriff

"Этот вызов завершается неудачей, и когда я отлаживаю код ошибки, он возвращает ошибку 87: неверный параметр."
Это не отладка - это "о, он потерпел неудачу с сообщением об ошибке", за которым следует "Я сдаюсь".
У вас есть отладчик. Используйте его, чтобы посмотреть на данные и возможные параметры и решить, какой из них, а затем начать искать почему.

Я не собираюсь копаться в куче плохих студенческих оценок, которые вы нашли в интернете, чтобы понять, что с ними не так, особенно когда я не могу запустить их в тех же условиях, что и вы!

Member 14511380

Если у вас есть код экспертного класса для той же проблемы, о которой говорилось выше, пожалуйста, поделитесь им, если это разрешено, пока я продолжаю отлаживать проблему.
Спасибо.