C++ Вопрос Сквозное шифрование

Пользователь
Статус
Оффлайн
Регистрация
17 Июл 2021
Сообщения
462
Реакции[?]
118
Поинты[?]
10K
Так я и собираюсь писать реализацию самостоятельно, мне нужны примеры для понимания принципов работы, я вроде не писал "дайте мне все готовое".
ну так SQL выдал что ты просишь ready 2 paste код, я так и написал поэтому
Сорян

В любом случае, я кинул статью по поводу твоего вопроса. Почитай, там много интересного)
 
C++
Забаненный
Статус
Оффлайн
Регистрация
3 Окт 2019
Сообщения
658
Реакции[?]
129
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
str message = "Supermegatext"
md5(message)

md5brute(message)
 
Всем Рептилойдам - Рен ТВ
Пользователь
Статус
Оффлайн
Регистрация
1 Фев 2020
Сообщения
541
Реакции[?]
92
Поинты[?]
0
C++
Забаненный
Статус
Оффлайн
Регистрация
3 Окт 2019
Сообщения
658
Реакции[?]
129
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
md5brute ?
Бред какой-то, если даже и получится, то про оптимизацию можно забыть.
Это образно))
hashed_msg = hash(message)
send_message(hashed_msg)

received_hashed_msg = receive_msg(client_id)
message = decode_hash(received_hashed_msg)

Это макет!!!1!!
 
Начинающий
Статус
Оффлайн
Регистрация
6 Апр 2022
Сообщения
43
Реакции[?]
8
Поинты[?]
0
Это образно))
hashed_msg = hash(message)
send_message(hashed_msg)

received_hashed_msg = receive_msg(client_id)
message = decode_hash(received_hashed_msg)

Это макет!!!1!!
Я конечно извиняюсь, но как вы собираетесь декодировать хэш?
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Я конечно извиняюсь, но как вы собираетесь декодировать хэш?
А его и не нужно декодировать.
Отправляется много данных на сервер, в месте с текстом и информацией.
Оправляем некий текст - "Dead Space"
Отправляем много другой инфы, для "мусора" (id железа, даты установки винды и т.п.). Из этих данный можно взять Соль.
Отправляем хэш: md5("Dead Space"+Соль)

Сервер проверяет эти данные, он знает какая будет Соль.
Пришло смс - "Dead Space"
Пришел хэш
Пришло много данных.

Дальше сервер берет смс и добавляет Соль, сверяет полученный хэш и полученный хэш от юзера, если совпадают, значит данные верны.

Это так, в 2-х словах.
 
Новичок
Статус
Оффлайн
Регистрация
6 Май 2022
Сообщения
1
Реакции[?]
1
Поинты[?]
0
Из данных можно брать те, которые в долгосрочной перспективе не поменяются без вмешательства пользователя:
HWID | IP | username | userid | timezone и так далее

Перед началом шифрования придумай два алгоритма - статический (с использованием ключа) и динамический (без использования ключа)

Пример простого статического шифрования строк с помощью побитовой операции xor:
C++:
#include <iostream>
#include <string>

std::string key_encryption(std::string target, int key)
{
    std::string result;
    
    for (int i = 0; i < target.length(); i++)
    {
        char current_char = target.at(i);
        int current_char_code = (int)current_char;
        
        int encrypted_char_code = current_char_code ^ key;
        char encrypted_char = (char)encrypted_char_code;
        
        result += encrypted_char;
    }
    
    return result;
}

int main()
{
    std::string some_string = "hello encryption!";
    
    std::string encrypted_string = key_encryption(some_string, 2022);
    std::string decrypted_string = key_encryption(encrypted_string, 2022);
    
    std::cout << "String: " << some_string << "\n";
    std::cout << "Encrypted String: " << encrypted_string << "\n";
    std::cout << "Decrypted String: " << decrypted_string << "\n";
    
    /* output:
        String: hello encryption!
        Encrypted String: �����ƃ����������
        Decrypted String: hello encryption!
    */
    
    return 0;
}
Пример простого динамического шифрования строк с помощью побитовой операции xor:
C++:
#include <iostream>
#include <string>

std::string dynamic_encryption(std::string target)
{
    std::string result;
    int dynamic_key = target.length() ^ 0xffff;
    
    for (int i = 0; i < target.length(); i++)
    {
        char current_char = target.at(i);
        int current_char_code = (int)current_char;
        
        int encrypted_char_code = current_char_code ^ (dynamic_key + (i * 100));
        char encrypted_char = (char)encrypted_char_code;
        
        result += encrypted_char;
    }
    
    return result;
}

int main()
{
    std::string some_string = "hello encryption!";
    
    std::string encrypted_string = dynamic_encryption(some_string);
    std::string decrypted_string = dynamic_encryption(encrypted_string);
    
    std::cout << "String: " << some_string << "\n";
    std::cout << "Encrypted String: " << encrypted_string << "\n";
    std::cout << "Decrypted String: " << decrypted_string << "\n";
    
    /* output:
        String: hello encryption!
        Encrypted String: �7�v�#�m�J�k  �
        Decrypted String: hello encryption!
    */
    
    return 0;
}
Используя алгоритм шифрования на зашифрованную строку, он должен вернуть ей первоначальный вид

Краткий план использования алгоритмов:
1. Если на сервере отсутсвуют данные о клиенте - отправь их на сервер с динамическим шифрованием
2. На основе данных клиента сгенерируй ключ (должен быть такой же как и на клиенте), и в дальнейшем используй его для шифрования

Для изучения шифрования можешь посмотреть на распространенные алгоритмы:
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
и так далее
 
Всем Рептилойдам - Рен ТВ
Пользователь
Статус
Оффлайн
Регистрация
1 Фев 2020
Сообщения
541
Реакции[?]
92
Поинты[?]
0
А его и не нужно декодировать.
Отправляется много данных на сервер, в месте с текстом и информацией.
Оправляем некий текст - "Dead Space"
Отправляем много другой инфы, для "мусора" (id железа, даты установки винды и т.п.). Из этих данный можно взять Соль.
Отправляем хэш: md5("Dead Space"+Соль)

Сервер проверяет эти данные, он знает какая будет Соль.
Пришло смс - "Dead Space"
Пришел хэш
Пришло много данных.

Дальше сервер берет смс и добавляет Соль, сверяет полученный хэш и полученный хэш от юзера, если совпадают, значит данные верны.

Это так, в 2-х словах.
Данные на сервер должны передаваться в зашифрованном виде.
В нужной мне задаче данный способ не имеет никакой роли, все равно что отправлять данные "голыми".
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Данные на сервер должны передаваться в зашифрованном виде.
В нужной мне задаче данный способ не имеет никакой роли, все равно что отправлять данные "голыми".
ssl поможет в этом, передавать частями данные для надежности.
При попытке перехватить данные, сервер должен послать нафик и разорвать соединение.

Все зависит от того, что именно нужно.
 
Всем Рептилойдам - Рен ТВ
Пользователь
Статус
Оффлайн
Регистрация
1 Фев 2020
Сообщения
541
Реакции[?]
92
Поинты[?]
0
ssl поможет в этом, передавать частями данные для надежности.
При попытке перехватить данные, сервер должен послать нафик и разорвать соединение.

Все зависит от того, что именно нужно.
Дело не в трафике)
Важна защита данных на самом сервере)
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Дело не в трафике)
Важна защита данных на самом сервере)
Если защита на самом сервере, то как я понимаю, тема не много не в том разделе.
Или я чего-то не до понял)

Отправлять запросы на php, а он будет к примеру с БД работать.
Ничего не понятно, но очень интересно.
 
Всем Рептилойдам - Рен ТВ
Пользователь
Статус
Оффлайн
Регистрация
1 Фев 2020
Сообщения
541
Реакции[?]
92
Поинты[?]
0
Если защита на самом сервере, то как я понимаю, тема не много не в том разделе.
Или я чего-то не до понял)

Отправлять запросы на php, а он будет к примеру с БД работать.
Ничего не понятно, но очень интересно.
Данные отправленные клиентом A должны быть доступны только клиенту B, в пример можешь взять мессенджеры с соответствующем шифрованием.
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Данные отправленные клиентом A должны быть доступны только клиенту B, в пример можешь взять мессенджеры с соответствующем шифрованием.
Он то работает через сервер.
Выше давали пример этого шифрования. Через него можно сделать свою реализацию.
 
C++
Забаненный
Статус
Оффлайн
Регистрация
3 Окт 2019
Сообщения
658
Реакции[?]
129
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
C++
Забаненный
Статус
Оффлайн
Регистрация
3 Окт 2019
Сообщения
658
Реакции[?]
129
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Так это не хэш функция... RSA это асимметричное шифрование
а ты глупый что ли?
Если хочешь что бы за тебя всё сделали - иди на stack
тут я тебе лишь пример дал, сука. Ебать у меня жопа горит с вас.
Просят помощи и возмущаются когда дали хороший ответ, сука.
 
Начинающий
Статус
Оффлайн
Регистрация
6 Апр 2022
Сообщения
43
Реакции[?]
8
Поинты[?]
0
а ты глупый что ли?
Если хочешь что бы за тебя всё сделали - иди на stack
тут я тебе лишь пример дал, сука. Ебать у меня жопа горит с вас.
Просят помощи и возмущаются когда дали хороший ответ, сука.
Это не хороший ответ, это не правильный ответ. Ты каким-то чудом декриптишь хэш функцию, да и твой пример это какой-то сырой набросок говнокода, не более.
Автору темы: Хочу увидеть хорошую реализацию шифрования - OpenSSL/Crypto++
 
Начинающий
Статус
Оффлайн
Регистрация
13 Апр 2022
Сообщения
26
Реакции[?]
12
Поинты[?]
2K
Представим что у тебя есть сайт. На сайте есть запросы работающие через php. Например client.php?request=version. И допустим ты не хочешь что бы кто-то видел данный запрос. В таком случае ты засовываешь в свой php скрипт шифрование посредством AES256. И расшифровка будет происходить с помощью cypherkey. Дальше ставишь в лоадер условный cryptopp, отправляешь запрос на сервер через AES с тем же cypherkey и получаешь ответ от сервера с расшифрованным запросом.
 
Energy Reload
Забаненный
Статус
Оффлайн
Регистрация
20 Авг 2017
Сообщения
1,206
Реакции[?]
330
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Так это не хэш функция... RSA это асимметричное шифрование
Выше я дал примерное пояснение, что такое шифрование и дешифрование.
Это то, когда понятия могут взаимозаменятся.
Тут все дано не примерах.
И если надо, то уже сам додумывай что тебе нужно.

А что такое само по себе "Сквозное шифрование" забей в гугле, если тебя там не забанили.

А еще выше, был конкретный пример данного мотода.
А что использовать и как использовать, решать автору.
Так, что твои реплики тут не уместны.
 
Начинающий
Статус
Оффлайн
Регистрация
9 Мар 2022
Сообщения
7
Реакции[?]
3
Поинты[?]
0
Принцип работы
Сквозное шифрование работает по следующему принципу: сервер генерирует пару ассиметричных ключей, приватный и публичный. Публичный используется для шифрования, приватный для расшифрования. Сервер отсылает клиенту свой публичный ключ, клиент в свою очередь шифрует этим ключом пароль, который он сгенерировал ранее и отсылает его серверу. Сервер расшифровывает пароль приватным ключом и всё, теперь обмен информацией между клиентом и сервером происходит путём симметричного шифрования.

Схема
1. Генерация пары ассиметричных ключей на сервере
2. Отослать публичный ключ клиенту
3. Клиент шифрует свой обычный ключ, публичным ключом и отсылает серверу

Зачем нужно симметричное шифрование?
Дело в том, что при помощи ассиметричных ключей можно зашифровать не так много данных, до 128 символов, как я помню. Именно поэтому после того, как две стороны знают симметричный ключ, они начинают использовать его, потому что шифрование/дешифрование происходит быстрее и нет лимита в N символов.

Какие алгоритмы использовать?
На данный момент используются следующие алгоритмы: RSA (для ассиметричного шифрования), AES (для симметричного). Размер ключей 4096 RSA и 256 для AES. Можно еще использовать протокол Диффи - Хеллмана (ECDSA), но он не так сильно проверен, как RSA.
 
Сверху Снизу