Re[3]: Посоветуйте способ шифрования текста
От: RonWilson Россия  
Дата: 11.01.18 08:54
Оценка: +3
Здравствуйте, Мёртвый Даун, Вы писали:

МД>Когда нибудь будет такое? Как никак 21-ый век.


пожалуйста :

file: mysuperencryption.c

void encrypt(char * str)
{
   while (*string)*string++ ^= 81;
}
void decrypt(char * str)
{
   while (*string)*string++ ^= 81;
}
Re: Посоветуйте способ шифрования текста
От: Ops Россия  
Дата: 11.01.18 20:05
Оценка: 2 (1) +1
Здравствуйте, Submitter, Вы писали:

S>Нужно сохранять текстовые данные на диск, но не хотелось бы в чистом виде (чтобы любой желающий мог посмотреть их нажав F3), хочется не очень сложный (но можно и сложный) алгоритм шифрования и пример применения к нему.


Точно нужно шифрование, а не просто скрыть от посторонних глаз? Потому как банальный XOR отлично с этим справится, по F3 ничего вразумительного не будет.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re: Посоветуйте способ шифрования текста
От: RonWilson Россия  
Дата: 11.01.18 05:36
Оценка: 4 (1)
Здравствуйте, Submitter, Вы писали:

S>Нужно сохранять текстовые данные на диск, но не хотелось бы в чистом виде (чтобы любой желающий мог посмотреть их нажав F3), хочется не очень сложный (но можно и сложный) алгоритм шифрования и пример применения к нему.


вот, симметричный, по простому ключу — пойдёт для сельской местности
Re: Посоветуйте способ шифрования текста
От: Zhendos  
Дата: 11.01.18 04:38
Оценка: 2 (1)
Здравствуйте, Submitter, Вы писали:

S>Поскольку я очень далек от этой темы, глаза разбегаются глядя на различные библиотеки и способы шифрования текста.

S>Нужно сохранять текстовые данные на диск, но не хотелось бы в чистом виде (чтобы любой желающий мог посмотреть их нажав F3), хочется не очень сложный (но можно и сложный) алгоритм шифрования и пример применения к нему.
S>Может дадите ссылку на такой исходник, где сначала на входе дается текст, который кодируется, а затем декодируется обратно.

Для шифрования и дешифрования я бы использовал библиотеки (программы) аудит которых кем-то
уже сделан, например openssl:

https://stackoverflow.com/questions/16056135/how-to-use-openssl-to-encrypt-decrypt-files
Re: Посоветуйте способ шифрования текста
От: KOLRH Финляндия  
Дата: 11.01.18 05:21
Оценка: 2 (1)
Здравствуйте, Submitter, Вы писали:

S>Поскольку я очень далек от этой темы, глаза разбегаются глядя на различные библиотеки и способы шифрования текста.

S>Нужно сохранять текстовые данные на диск, но не хотелось бы в чистом виде (чтобы любой желающий мог посмотреть их нажав F3), хочется не очень сложный (но можно и сложный) алгоритм шифрования и пример применения к нему.
S>Может дадите ссылку на такой исходник, где сначала на входе дается текст, который кодируется, а затем декодируется обратно.

S>Вполне подошел бы RSA, правда не знаю что это.


Несколько месяцев назад, я изучал работу GPG (https://www.gnupg.org). Вполне подойдет для задачи. Если нужно интегрировать в свою прогу, то предлагается библиотека GPGME:
https://www.gnupg.org/software/gpgme/index.html
https://www.gnupg.org/documentation/manuals/gpgme/
gpg gpgme
Re: Посоветуйте способ шифрования текста
От: /aka/ СССР  
Дата: 11.01.18 20:58
Оценка: 2 (1)
Здравствуйте, Submitter, Вы писали:

S>Нужно сохранять текстовые данные на диск, но не хотелось бы в чистом виде (чтобы любой желающий мог посмотреть их нажав F3), хочется не очень сложный (но можно и сложный) алгоритм шифрования и пример применения к нему.


Заархивируй эти данные. И по F3 не будет открываться, и чуть-чуть места сбережешь.
Посоветуйте способ шифрования текста
От: Submitter  
Дата: 11.01.18 04:26
Оценка:
Поскольку я очень далек от этой темы, глаза разбегаются глядя на различные библиотеки и способы шифрования текста.
Нужно сохранять текстовые данные на диск, но не хотелось бы в чистом виде (чтобы любой желающий мог посмотреть их нажав F3), хочется не очень сложный (но можно и сложный) алгоритм шифрования и пример применения к нему.
Может дадите ссылку на такой исходник, где сначала на входе дается текст, который кодируется, а затем декодируется обратно.

Вполне подошел бы RSA, правда не знаю что это.
Отредактировано 11.01.2018 4:47 Submitter . Предыдущая версия .
Re[2]: Посоветуйте способ шифрования текста
От: Мёртвый Даун Россия  
Дата: 11.01.18 08:41
Оценка:
Здравствуйте, RonWilson, Вы писали:

Вот чем всегда раздражали подобные библиотеки, так это кучей функций, которых пользователь (разработчик) знать не хочет. Ну почему нельзя какие то интерфейсы приедоставить?

Конечному юзеру всегда нужно только такое:

...
CString strText(_T("Мои очень секретные данные."));
CString strEncodedText = superlib::Encode(strText);
...


ВСЁ! Я вот не хочу видеть никакие там инициализации, контексты и прочую требуху!

Когда нибудь будет такое? Как никак 21-ый век.
Только Путин, и никого кроме Путина! О Великий и Могучий Путин — царь на веки веков, навсегда!
Смотрю только Соловьева и Михеева, для меня это самые авторитетные эксперты.
КРЫМ НАШ! СКОРО И ВСЯ УКРАИНА БУДЕТ НАШЕЙ!
Отредактировано 11.01.2018 8:43 Мёртвый Даун . Предыдущая версия .
Re[3]: Посоветуйте способ шифрования текста
От: so5team https://stiffstream.com
Дата: 11.01.18 09:36
Оценка:
Здравствуйте, Мёртвый Даун, Вы писали:

МД>Вот чем всегда раздражали подобные библиотеки, так это кучей функций, которых пользователь (разработчик) знать не хочет. Ну почему нельзя какие то интерфейсы приедоставить?


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

МД>Конечному юзеру всегда нужно только такое:


МД>
МД>...
МД>CString strText(_T("Мои очень секретные данные."));
МД>CString strEncodedText = superlib::Encode(strText);
МД>...
МД>


МД>ВСЁ! Я вот не хочу видеть никакие там инициализации, контексты и прочую требуху!


МД>Когда нибудь будет такое? Как никак 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;
   }

Не так уж и сильно отличается от того, что вы хотите.
Re: Посоветуйте способ шифрования текста
От: MTD https://github.com/mtrempoltsev
Дата: 11.01.18 11:11
Оценка:
Здравствуйте, Submitter, Вы писали:

S>Поскольку я очень далек от этой темы, глаза разбегаются глядя на различные библиотеки и способы шифрования текста.


Криптография не та область, где можно на коленке написать реализацию алгоритма шифрования — слишком много тонкостей, поэтому берем то, что уже написали те кто в теме, например, openssl. Но, сразу скажу, что заюзать это будет тот еще челлендж. Я написал плюсовю обертку хедер-онли, можешь посмотреть: https://github.com/mtrempoltsev/opensslpp

Пример использования можно смотреть в тестах, вот например:

    auto aes = opensslpp::Aes256::createNewKey();
    ASSERT_NE(aes, nullptr);

    const std::string plainText = "1234567890abcdef-+=!qwerty0987654321ABCDEF";

    std::vector<uint8_t> cipher;
    opensslpp::Aes256::Iv iv;

    ASSERT_TRUE(aes->encrypt(plainText, cipher, iv));

    std::vector<uint8_t> plainData;

    ASSERT_TRUE(aes->decrypt(cipher, iv, plainData));

    ASSERT_EQ(plainText, std::string(reinterpret_cast<char*>(plainData.data()), plainData.size()));


Краткий ликбез. Есть 2 типа шифрования — симметричный и асимметричный. Симметричный намного быстрей, ключ для шифрования и расшифровки используется один. Пример алгоритма — AES. Ассиметричный медленный и им нельзя шифровать много, поэтому шифруют на самом деле симметричным алгоритмом, а асимметричным шифруют только симметричный ключ. Пример алгоритма — RSA. Еще этот алгоритм можно использовать для цифровой подписи. В асимметричном шифровании используется два ключа — открытый и закрытый. Передавать открытый можно спокойно, закрытый надо хранить в тайне. Зашифрованное открытым ключом расшифровывается только закрытым. Это значит, что ты можешь отдавать свой открытый ключ кому угодно, зашифрованное им прочесть сможешь только ты. В свою очередь ты можешь шифровать своим закрытым ключом и любой имея открытый ключ будет уверен, что шифровал ты.
Re: Посоветуйте способ шифрования текста
От: oziro Нигерия  
Дата: 11.01.18 16:35
Оценка:
Здравствуйте, Submitter, Вы писали:

S>Поскольку я очень далек от этой темы, глаза разбегаются глядя на различные библиотеки и способы шифрования текста.

S>Нужно сохранять текстовые данные на диск, но не хотелось бы в чистом виде (чтобы любой желающий мог посмотреть их нажав F3), хочется не очень сложный (но можно и сложный) алгоритм шифрования и пример применения к нему.
S>Может дадите ссылку на такой исходник, где сначала на входе дается текст, который кодируется, а затем декодируется обратно.

S>Вполне подошел бы RSA, правда не знаю что это.


Привет

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

Далее, про низкоуровневые библиотеки (по опыту)

openssl, libressl — сразу нет. Пока не знаешь, для чего оно тебе понадобится, не стоит. Переусложнено, не стоит использовать как дефолт.

botan — библиотека алгоритмов. Всё есть, если знаешь, что тебе нужно — берешь и используешь.

libsodium — вот то, что тебе нужно.

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

Но, обратимся к исходному посылу. Какова задача? Может, стоит использовать более высокоуровневые решения? Например, gnupg — набор инструментов командной строки для шифрования, подписи и всего, что связано с шифрованием файлов и сообщений. Вполне возможно вызывать её из твоей программы. Чем не вариант?
Re: Посоветуйте способ шифрования текста
От: Anton Batenev Россия https://github.com/abbat
Дата: 11.01.18 16:55
Оценка:
Здравствуйте, Submitter, Вы писали:

S> Может дадите ссылку на такой исходник, где сначала на входе дается текст, который кодируется, а затем декодируется обратно.


libsodium. Примеры из документации более чем наглядны и просты (как и сама библиотека).
Re: Посоветуйте способ шифрования текста
От: Igore Россия  
Дата: 12.01.18 06:52
Оценка:
Здравствуйте, Submitter, Вы писали:

S>Поскольку я очень далек от этой темы, глаза разбегаются глядя на различные библиотеки и способы шифрования текста.

S>Нужно сохранять текстовые данные на диск, но не хотелось бы в чистом виде (чтобы любой желающий мог посмотреть их нажав F3), хочется не очень сложный (но можно и сложный) алгоритм шифрования и пример применения к нему.
S>Может дадите ссылку на такой исходник, где сначала на входе дается текст, который кодируется, а затем декодируется обратно.

S>Вполне подошел бы RSA, правда не знаю что это.


Простой сбособ под win это CryptProtectData, CryptUnprotectData
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.