Здравствуйте, Submitter, Вы писали:
S>Нужно сохранять текстовые данные на диск, но не хотелось бы в чистом виде (чтобы любой желающий мог посмотреть их нажав F3), хочется не очень сложный (но можно и сложный) алгоритм шифрования и пример применения к нему.
Точно нужно шифрование, а не просто скрыть от посторонних глаз? Потому как банальный XOR отлично с этим справится, по F3 ничего вразумительного не будет.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Здравствуйте, Submitter, Вы писали:
S>Нужно сохранять текстовые данные на диск, но не хотелось бы в чистом виде (чтобы любой желающий мог посмотреть их нажав F3), хочется не очень сложный (но можно и сложный) алгоритм шифрования и пример применения к нему.
вот, симметричный, по простому ключу — пойдёт для сельской местности
Здравствуйте, Submitter, Вы писали:
S>Поскольку я очень далек от этой темы, глаза разбегаются глядя на различные библиотеки и способы шифрования текста. S>Нужно сохранять текстовые данные на диск, но не хотелось бы в чистом виде (чтобы любой желающий мог посмотреть их нажав F3), хочется не очень сложный (но можно и сложный) алгоритм шифрования и пример применения к нему. S>Может дадите ссылку на такой исходник, где сначала на входе дается текст, который кодируется, а затем декодируется обратно.
Для шифрования и дешифрования я бы использовал библиотеки (программы) аудит которых кем-то
уже сделан, например openssl:
Здравствуйте, Submitter, Вы писали:
S>Поскольку я очень далек от этой темы, глаза разбегаются глядя на различные библиотеки и способы шифрования текста. S>Нужно сохранять текстовые данные на диск, но не хотелось бы в чистом виде (чтобы любой желающий мог посмотреть их нажав F3), хочется не очень сложный (но можно и сложный) алгоритм шифрования и пример применения к нему. S>Может дадите ссылку на такой исходник, где сначала на входе дается текст, который кодируется, а затем декодируется обратно.
S>Вполне подошел бы RSA, правда не знаю что это.
Здравствуйте, Submitter, Вы писали:
S>Нужно сохранять текстовые данные на диск, но не хотелось бы в чистом виде (чтобы любой желающий мог посмотреть их нажав F3), хочется не очень сложный (но можно и сложный) алгоритм шифрования и пример применения к нему.
Заархивируй эти данные. И по F3 не будет открываться, и чуть-чуть места сбережешь.
Поскольку я очень далек от этой темы, глаза разбегаются глядя на различные библиотеки и способы шифрования текста.
Нужно сохранять текстовые данные на диск, но не хотелось бы в чистом виде (чтобы любой желающий мог посмотреть их нажав F3), хочется не очень сложный (но можно и сложный) алгоритм шифрования и пример применения к нему.
Может дадите ссылку на такой исходник, где сначала на входе дается текст, который кодируется, а затем декодируется обратно.
Вот чем всегда раздражали подобные библиотеки, так это кучей функций, которых пользователь (разработчик) знать не хочет. Ну почему нельзя какие то интерфейсы приедоставить?
ВСЁ! Я вот не хочу видеть никакие там инициализации, контексты и прочую требуху!
Когда нибудь будет такое? Как никак 21-ый век.
Только Путин, и никого кроме Путина! О Великий и Могучий Путин — царь на веки веков, навсегда!
Смотрю только Соловьева и Михеева, для меня это самые авторитетные эксперты.
КРЫМ НАШ! СКОРО И ВСЯ УКРАИНА БУДЕТ НАШЕЙ!
Здравствуйте, Мёртвый Даун, Вы писали:
МД>Вот чем всегда раздражали подобные библиотеки, так это кучей функций, которых пользователь (разработчик) знать не хочет. Ну почему нельзя какие то интерфейсы приедоставить?
Может быть потому, что криптография -- это вовсе не так просто, как кажется? Даже для минимального использования нужно понимать разницу между асимметричны и симметрийными схемами, блочным и потоковым шифрованием, включая режимы для блочного шифрования.
МД>Конечному юзеру всегда нужно только такое:
МД>
МД>ВСЁ! Я вот не хочу видеть никакие там инициализации, контексты и прочую требуху!
МД>Когда нибудь будет такое? Как никак 21-ый век.
Есть довольно таки старые библиотеки Crypto++ и Botan, которые приблизительно это и дают пользователю (с поправками на то, что у пользователя все-таки должны быть минимальные представления о криптографии). Вот пример из документации к Botan-у:
#include <botan/rng.h>
#include <botan/auto_rng.h>
#include <botan/cipher_mode.h>
#include <botan/hex.h>
#include <iostream>
int main()
{
Botan::AutoSeeded_RNG rng;
const std::string plaintext("Your great-grandfather gave this watch to your granddad for good luck. Unfortunately, Dane's luck wasn't as good as his old man's.");
const std::vector<uint8_t> key = Botan::hex_decode("2B7E151628AED2A6ABF7158809CF4F3C");
std::unique_ptr<Botan::Cipher_Mode> enc(Botan::get_cipher_mode("AES-128/CBC/PKCS7", Botan::ENCRYPTION));
enc->set_key(key);
Botan::secure_vector<uint8_t> pt(plaintext.data(), plaintext.data()+plaintext.length());
//generate fresh nonce (IV)
enc->start(rng.random_vec(enc->default_nonce_length()));
enc->finish(pt);
std::cout << enc->name() << " with iv " << Botan::hex_encode(iv) << " " << Botan::hex_encode(pt) << "\n";
return 0;
}
Не так уж и сильно отличается от того, что вы хотите.
Здравствуйте, Submitter, Вы писали:
S>Поскольку я очень далек от этой темы, глаза разбегаются глядя на различные библиотеки и способы шифрования текста.
Криптография не та область, где можно на коленке написать реализацию алгоритма шифрования — слишком много тонкостей, поэтому берем то, что уже написали те кто в теме, например, openssl. Но, сразу скажу, что заюзать это будет тот еще челлендж. Я написал плюсовю обертку хедер-онли, можешь посмотреть: https://github.com/mtrempoltsev/opensslpp
Пример использования можно смотреть в тестах, вот например:
Краткий ликбез. Есть 2 типа шифрования — симметричный и асимметричный. Симметричный намного быстрей, ключ для шифрования и расшифровки используется один. Пример алгоритма — AES. Ассиметричный медленный и им нельзя шифровать много, поэтому шифруют на самом деле симметричным алгоритмом, а асимметричным шифруют только симметричный ключ. Пример алгоритма — RSA. Еще этот алгоритм можно использовать для цифровой подписи. В асимметричном шифровании используется два ключа — открытый и закрытый. Передавать открытый можно спокойно, закрытый надо хранить в тайне. Зашифрованное открытым ключом расшифровывается только закрытым. Это значит, что ты можешь отдавать свой открытый ключ кому угодно, зашифрованное им прочесть сможешь только ты. В свою очередь ты можешь шифровать своим закрытым ключом и любой имея открытый ключ будет уверен, что шифровал ты.
Здравствуйте, Submitter, Вы писали:
S>Поскольку я очень далек от этой темы, глаза разбегаются глядя на различные библиотеки и способы шифрования текста. S>Нужно сохранять текстовые данные на диск, но не хотелось бы в чистом виде (чтобы любой желающий мог посмотреть их нажав F3), хочется не очень сложный (но можно и сложный) алгоритм шифрования и пример применения к нему. S>Может дадите ссылку на такой исходник, где сначала на входе дается текст, который кодируется, а затем декодируется обратно.
S>Вполне подошел бы RSA, правда не знаю что это.
Привет
Обязательно нужно на качественном уровне знать и различать все основные понятия криптографии. Ну, т.е. без понимания основных современных концепций даже не суйся не только в недра алгоритмов, но и к интерфейсам библиотек. Иначе твой труд, очень вероятно, не будет стоить выеденного яйца, т.к. грамотный специалист найдет ошибку в использованных тобой приёмах и одним махом перечеркнет мнимую защиту. Это именно касается неграмотного использования существущих надежных и распространенных инструментов.
Далее, про низкоуровневые библиотеки (по опыту)
openssl, libressl — сразу нет. Пока не знаешь, для чего оно тебе понадобится, не стоит. Переусложнено, не стоит использовать как дефолт.
botan — библиотека алгоритмов. Всё есть, если знаешь, что тебе нужно — берешь и используешь.
libsodium — вот то, что тебе нужно.
Конечно, всегда надо читать документацию. И учти, документация по криптографии имеет свойство устаревать, т.е. статьи и рекомендации х00 годов надо рассматривать очень критически, особенно касается количественных данных и степени надежности тех или иных алгоритмов.
Но, обратимся к исходному посылу. Какова задача? Может, стоит использовать более высокоуровневые решения? Например, gnupg — набор инструментов командной строки для шифрования, подписи и всего, что связано с шифрованием файлов и сообщений. Вполне возможно вызывать её из твоей программы. Чем не вариант?
Здравствуйте, Submitter, Вы писали:
S> Может дадите ссылку на такой исходник, где сначала на входе дается текст, который кодируется, а затем декодируется обратно.
libsodium. Примеры из документации более чем наглядны и просты (как и сама библиотека).
Здравствуйте, Submitter, Вы писали:
S>Поскольку я очень далек от этой темы, глаза разбегаются глядя на различные библиотеки и способы шифрования текста. S>Нужно сохранять текстовые данные на диск, но не хотелось бы в чистом виде (чтобы любой желающий мог посмотреть их нажав F3), хочется не очень сложный (но можно и сложный) алгоритм шифрования и пример применения к нему. S>Может дадите ссылку на такой исходник, где сначала на входе дается текст, который кодируется, а затем декодируется обратно.
S>Вполне подошел бы RSA, правда не знаю что это.