Какой метод / алгоритм / библиотека может безопасно шифровать, а затем расшифровывать - PullRequest
0 голосов
/ 24 октября 2011

Следующий проект выполняется на C ++ с WinAPI, для шифрования / кодирования я использую CryptoC ++, но я открыт для лучших библиотек. Мне нужно зашифровать / кодировать данные электронной почты, передать их, а затем расшифровать на другом конце, чтобы привилегированные пользователи могли читать электронную почту.

Моя первоначальная идея заключалась в том, чтобы просто зашифровать текст электронной почты с помощью SHA256, используя мой ключ (например, «MYKEY»). Но я думаю, что не до конца понимаю, что такое хеширование. Я понимаю, что строку, зашифрованную с помощью SHA256, MD5 или AES, невозможно расшифровать, НО я подумал, что если я зашифрую строку с помощью своего специального ключа («MYKEY»), то я смогу затем расшифровать ее, пока я знаю специальный ключ. Это правильно?

Если нет, вы можете предложить библиотеку, алгоритм или метод, который я могу использовать для выполнения своей задачи по шифрованию / кодированию текста электронной почты и ТОЛЬКО для возможности расшифровки, если у меня есть ключ или какой-либо общий секрет, который позволит мне расшифровать данные

Ответы [ 2 ]

2 голосов
/ 24 октября 2011

Как сказал капитан Жираф, алгоритм хеширования не является алгоритмом шифрования (хотя они оба учитываются в области симметричной криптографии).Хорошая хеш-функция не имеет способа восстановить сообщение, которое соответствует произведенному хешу (кроме как попробовать все возможные сообщения, чтобы увидеть, дают ли они тот же хеш).(А также, хеш-функция имеет вывод фиксированного размера, но имеет ввод переменного размера, что означает, что существует много сообщений, дающих один и тот же хеш. По-прежнему должно быть трудно найти даже одну пару сообщений, дающих одинаковый хеш, или сообщениедля данного хэша.)

Вам необходим алгоритм шифрования.Скорее всего, хорошей идеей будет асимметричное шифрование (использование открытых ключей для шифрования, частных ключей для дешифрования).

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

Для шифрования электронной почты используйте либо OpenPGP ( RFC 4880 ), либо S / MIME ( RFC 3851 ), либо несколько подмножеств одного из этих.

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

1 голос
/ 24 октября 2011

SHA256 и MD5 являются односторонними функциями.т.е. нет расшифровки.См. Хеширование http://en.wikipedia.org/wiki/Cryptographic_hash_function.

Но вам действительно необходимо ознакомиться с процедурами шифрования, прежде чем пытаться создать безопасную связь.

Как говорится, в википедии есть статья, посвященная реализациям http://en.wikipedia.org/wiki/AES_implementations

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...