powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Шифрование строки
13 сообщений из 13, страница 1 из 1
Шифрование строки
    #39126744
ukugyul552465
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Написал так:
Код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <fstream>
using namespace std;
	int main()
{
	setlocale (0, "");
    
    //Создаём три символьные переменные для ключа, текста и зашифрованного текста
	char *key = new char;
	char *text = new char;
	char *enc_text = new char;
	// Создаём целочисленную переменную для хранения кол-ва символов в тексте и кол-ва символов в ключе
	long long Text_Len = 0;
	long long Key_Len = 0;

	//Считываем данные из key.txt в переменную key
 ifstream F;
	F.open("key.txt", ios::in);
	while (!F.eof())
{
F>>key[Key_Len];
Key_Len = Key_Len + 1;
	}
	F.close();
	//Считываем данные из text.txt в переменную text
		 ifstream F1;
	F1.open("text.txt", ios::in);
	while (!F1.eof())
{
F1>>text[Text_Len];
Text_Len = Text_Len + 1;
	}
	F.close();

    for(int i=0; i<Text_Len; i++)
       {
		   enc_text[i] = text[i]*key[i];
	}
		
	//Записываем данные из переменной enc_text в файл enc_text.txt
		ofstream G;
	G.open("enc_text.txt", ios::out);
	G<<enc_text;
	G.close();


   cout << "Done";
		
	cin.get();
	cin.get();
	return 0;
	}



На вход идут файлы text.txt и key.txt, на выход - enc_text.txt.

Проблема в том, что в ключе должно быть столько же символов, сколько и в тексте.
Не пойму, как сделать, чтобы шифровало нормально: к примеру, чтобы текст abcdef , зашифрованный ключом yui , отличался от зашифрованного ключом yuioo
...
Рейтинг: 0 / 0
Шифрование строки
    #39126745
ukugyul552465
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Замена enc_text[i] = text[i]*key[i];
на
enc_text[i] = text[i]**key;
тоже не помогает.
...
Рейтинг: 0 / 0
Шифрование строки
    #39126746
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ukugyul552465чтобы текст abcdef, зашифрованный ключом yui, отличался от
зашифрованного ключом yuioo
Насколько отличался? Начиная с четвёртого байта или чтобы там вообще не было ничего общего?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Шифрование строки
    #39126748
ukugyul552465
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хоть на сколько-то.
Потому что в данной ситуации у меня что ключ yui, что yuioo - выдают один и тот же зашифрованный текст.
...
Рейтинг: 0 / 0
Шифрование строки
    #39126749
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ukugyul552465в данной ситуации у меня что ключ yui, что yuioo - выдают один и тот
же зашифрованный текст.
Это странно, поскольку скомпилированная из этих исходников программа должна падать с
ошибкой Access Violation. Сначала разберись с этим, а потом уже можешь использовать
раздельные счётчики для текста и ключа.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Шифрование строки
    #39126752
ukugyul552465
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
 for(int i=0; i<Text_Len; i++)
       {
		   for (int j = 0; j<8; j++)
		   {
			   enc_text[i] = text[i] ^ key[j];
		   }

	}



Вроде работает, зашифрованный текст разный для длины ключа 5 и 8, но только тут вручную надо вставлять размер ключа пока.
Программа шифрует нормально, но потом при закрытии выскакивает какая-то ошибка.
...
Рейтинг: 0 / 0
Шифрование строки
    #39126755
ukugyul552465
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Заменил на
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
for(int i=0; i<Text_Len; i++)
       {
		   for (int j = 0; j<Key_Len; j++)
		   {
			   enc_text[i] = text[i] ^ key[j];
		   }

	}



Теперь нормально шифрует, ошибок нет никаких.
Подставил строку cout << Key_Len; - выдаёт значение, на 1 большее чем длина ключа в key.tst, из-за \0 в конце, вероятно, но на работоспособность не влияет.
...
Рейтинг: 0 / 0
Шифрование строки
    #39126905
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторПроблема в том, что в ключе должно быть столько же символов, сколько и в тексте.
Не пойму, как сделать, чтобы шифровало нормально: к примеру, чтобы текст abcdef, зашифрованный ключом yui, отличался от зашифрованного ключом yuioo

Проверяйте это перед началом вашего шифрования, и всё. Если длины разные, то шифрование производиться не должно.

А что это за шифрование такое ? Я совсем не специалист по теории безопасности, вижу что это симметричное шифрование, но не более. Как оно называется, и зачем вы это делаете ? И вы так просто меняете умножить на XOR
...
Рейтинг: 0 / 0
Шифрование строки
    #39126976
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ukugyul552465Заменил на
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
for(int i=0; i<Text_Len; i++)
       {
		   for (int j = 0; j<Key_Len; j++)
		   {
			   enc_text[i] = text[i] ^ key[j];
		   }

	}


Этот код аналогичен такому:
Код: plaintext
1.
2.
3.
4.
for(int i=0; i<Text_Len; i++)
       {
			   enc_text[i] = text[i] ^ key[Key_Len - 1];
	}


т.е. ты последним символом шифруешь.
...
Рейтинг: 0 / 0
Шифрование строки
    #39127416
ukugyul552465
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Только начинаю изучать шифрование. Не знаю, что это за шифрование. Просто пытаюсь что-то сделать.
Понял, что шифруется последним символом. Сейчас думаю, как решить.
...
Рейтинг: 0 / 0
Шифрование строки
    #39127442
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Применять весь ключ к каждому символу бессмысленно. Надо один символ ключа на один символ текста.
Т.е. так должно быть при ключе в 3 символа
Код: plaintext
1.
2.
3.
4.
5.
6.
enc_text[0] = text[0] ^ key[0];
enc_text[1] = text[1] ^ key[1];
enc_text[2] = text[2] ^ key[2];
enc_text[3] = text[3] ^ key[0];
enc_text[4] = text[4] ^ key[1];
...
...
Рейтинг: 0 / 0
Шифрование строки
    #39127476
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ukugyul552465, я тебя прошу не флудить топиками если в этом нет острой необходимости.
...
Рейтинг: 0 / 0
Шифрование строки
    #39127493
ukugyul552465
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TПрименять весь ключ к каждому символу бессмысленно. Надо один символ ключа на один символ текста.
Т.е. так должно быть при ключе в 3 символа
Код: plaintext
1.
2.
3.
4.
5.
6.
enc_text[0] = text[0] ^ key[0];
enc_text[1] = text[1] ^ key[1];
enc_text[2] = text[2] ^ key[2];
enc_text[3] = text[3] ^ key[0];
enc_text[4] = text[4] ^ key[1];
...



Смысл понятен, буду делать.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Шифрование строки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]