С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.58/48: Рейтинг темы: голосов - 48, средняя оценка - 4.58
50 / 40 / 5
Регистрация: 30.06.2010
Сообщений: 1,191

Кодирование текста

03.07.2010, 22:43. Показов 9104. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как закодировать текст?
например хочу создать прогу, которая будит сохранять файлы в своем формате и кодировать текст.
Кодировать текст например каждую букву заменять на другую, стоящую через одну в алфавите, так же с цифрами, пробел на что нибудь другое.
а при открытии файла моей программой он раскодировал его.
либо еще как нибудь, но что бы нельзя было узнать что написанно в файле использую какие либо другие проги.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.07.2010, 22:43
Ответы с готовыми решениями:

Кодирование текста BASE64
Помогите! При кодировании текста с английского кодирует и расшифровывает, а с русского – какие-то иероглифы (при расшифровывании). В чем...

Кодирование текста в UCS2
Дана строка String str = "Привет"; // UnicodeString Как закодировать ее в UCS2, есть ли какие-нибудь встроенные методы?

Кодирование
Как сделать кодирование в запросе к сайту cyb =...

29
 Аватар для radiohobbyt
192 / 190 / 15
Регистрация: 27.01.2009
Сообщений: 548
04.07.2010, 00:54
самое простое- побайтное исключающее или с паролем. один раз- закодировал. еще разок- раскодировал.
0
50 / 40 / 5
Регистрация: 30.06.2010
Сообщений: 1,191
04.07.2010, 00:58  [ТС]
ну а код или еще че нить?))
ток если напишите, подпишите каждую строку плз
0
 Аватар для serrg
70 / 70 / 4
Регистрация: 02.07.2010
Сообщений: 228
04.07.2010, 01:18
вот пример для builder, тупо и влоб, но прога результирующая не разу не подводила, увы комментить некогда
C++
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
void __fastcall TForm1::Button1Click(TObject *Sender)\\кнопка зашифровать
{
  int key=CSpinEdit1->Text.ToInt()*-1,sz;
  TFileStream *file = new TFileStream(Edit1->Text,fmOpenRead);
  sz=file->Size;
  ProgressBar1->Max=sz;
  byte *b = new byte[sz];
  file->Read(b,sz);
  delete file;
  for (unsigned int i=0;i<sz;i+=abs(key))
  {
    b[i]+=key;
    ProgressBar1->Position=i;
  }
  file = new TFileStream(Edit2->Text,fmOpenWrite|fmCreate);
  file->Write(b,sz);
  delete file;
  delete b;
  ProgressBar1->Position=0;
}
void __fastcall TForm1::Button2Click(TObject *Sender)//кнопка расшифровать
{
  int key=CSpinEdit1->Text.ToInt(),sz;
  TFileStream *file = new TFileStream(Edit1->Text,fmOpenRead);
  sz=file->Size;
  ProgressBar1->Max=sz;
  byte *b = new byte[sz];
  file->Read(b,sz);
  delete file;
  for (unsigned int i=0;i<sz;i+=abs(key))
  {
    b[i]+=key;
    ProgressBar1->Position=i;
  }
  file = new TFileStream(Edit2->Text,fmOpenWrite|fmCreate);
  file->Write(b,sz);
  delete file;
  delete b;
  ProgressBar1->Position=0;
}
тут Edit1-файл для шифрования;
Edit2-имы выходного файла (зашифрованного)
CSpinEdit1-ключь шифрования (n)
в итоге n-ный байт смещается на n позиций
1
Эксперт С++
 Аватар для MikeSoft
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
04.07.2010, 01:23
ProstoMad, а вы сами не пробовали своими руками что-то написать?
Направление мысли вам задали! Пробуйте реализовать.
У символов есть ASCII код. Пробуйте его подменить.
Открываете файл. Получаете символ, выдираете его ASCII код, например так:
C++
1
unsigned int index = (unsigned int)((unsigned char)(buf[i]))
Смещаете этот индекс на сколько угодно и пробуете записать его обратно в файл.
0
50 / 40 / 5
Регистрация: 30.06.2010
Сообщений: 1,191
04.07.2010, 10:08  [ТС]
я тока начал изучать с++, поэтому очень многое не знаю.
0
 Аватар для serrg
70 / 70 / 4
Регистрация: 02.07.2010
Сообщений: 228
04.07.2010, 10:58
Цитата Сообщение от ProstoMad Посмотреть сообщение
я тока начал изучать с++, поэтому очень многое не знаю.
Тогда мой тебе совет начинай с простого и не заморачивайся на сложном, а вообще лучше поразбирай примеры из книг и статей, с нуля сложные программы с трудом пишутся и затрачивается много времени.
0
Эксперт С++
 Аватар для MikeSoft
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
04.07.2010, 12:31
Цитата Сообщение от ProstoMad Посмотреть сообщение
я тока начал изучать с++, поэтому очень многое не знаю.
Ну вот ... а вы сразу шифратор писать хотите...
Начните с изучения литературы (Дейтель или Либерти подойдут).
И гарантирую, что если у вас есть стремление научиться - то через две недели вы напишите такую программу сами.
А если что-то не получится - мы обязательно поможем.
0
 Аватар для assu
22 / 22 / 2
Регистрация: 29.08.2008
Сообщений: 138
05.07.2010, 07:08
ну вы напрягли конечно парня :-)
вот держи код самого простого шифрования алгоритмом xor

C++
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
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//ФУНКЦИЯ ШИФРОВАНИЯ/ДЕШИФРОВАНИЯ
AnsiString XOR_Crypt(AnsiString in, AnsiString pass)
{
AnsiString out;
for (int x=1;x<in.Length()+1;x++)
        {
        out += (char)(in[x] ^ pass[x%pass.Length()+1]);
        }
return out;
}
//НАЧАЛО ПРОГРАММЫ
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Edit1->Text = XOR_Crypt(Edit2->Text,"!");
}
1
50 / 40 / 5
Регистрация: 30.06.2010
Сообщений: 1,191
05.07.2010, 07:22  [ТС]
Воо)) это норм)
ток что такое (char)(in[x] ^ pass[x%pass.Length()+1])
и
AnsiString XOR_Crypt(AnsiString in, AnsiString pass)
0
 Аватар для assu
22 / 22 / 2
Регистрация: 29.08.2008
Сообщений: 138
05.07.2010, 07:29
AnsiString XOR_Crypt(AnsiString in, AnsiString pass) - это функция, которая будет вызываться в программе таким способом XOR_Crypt(Edit2->Text,"!"). Функцию ты описываешь до начала программы, чтобы ты мог к ней обратиться из любого места программы.
(char)(in[x] ^ pass[x%pass.Length()+1]) - здесь идет непосредственное шифрование текста. каждая буква меняется на следующую за ней идущую. за шаг отвечает цифра +1, если поставишь +3, то вместо к примеру буквы А, будет ставиться буква Д.
0
50 / 40 / 5
Регистрация: 30.06.2010
Сообщений: 1,191
05.07.2010, 07:41  [ТС]
и каким образом он работает? он не заменяет каждую букву следущей)

Добавлено через 2 минуты
я например ввожу "a", а он пишет "@"

Добавлено через 3 минуты
а что значит выделенное в строчке Edit1->Text = XOR_Crypt(Edit2->Text,"!");
0
 Аватар для assu
22 / 22 / 2
Регистрация: 29.08.2008
Сообщений: 138
05.07.2010, 07:47
лови файл. Edit1 это поле, куда вводится текст
Вложения
Тип файла: rar Xor.rar (31.5 Кб, 94 просмотров)
2
 Аватар для serrg
70 / 70 / 4
Регистрация: 02.07.2010
Сообщений: 228
05.07.2010, 10:27
существует множество методов шифрования, вплоть до шифрования по различным функциям, но понять сложные , да ещё и самому закодить очень сложно на начальном уровне знания языка.
0
 Аватар для assu
22 / 22 / 2
Регистрация: 29.08.2008
Сообщений: 138
05.07.2010, 11:01
Цитата Сообщение от serrg Посмотреть сообщение
существует множество методов шифрования, вплоть до шифрования по различным функциям, но понять сложные , да ещё и самому закодить очень сложно на начальном уровне знания языка.
полностью согласен. И вобще любое дело в начале вызывает сложность. Поэтому на начальном этапе нужен самый простенький алгоритм, для того новичек смог его понять и досканаль разобрать как и что. По ходу вникания в суть шифрования человек сам начнет искать нужную литературу, читать и т.д. А то все сразу начинают отправлять книги читать. А новичку не интересны книги на начальном этапе. Ему практика нужна.
0
 Аватар для serrg
70 / 70 / 4
Регистрация: 02.07.2010
Сообщений: 228
05.07.2010, 17:31
Цитата Сообщение от assu Посмотреть сообщение
А то все сразу начинают отправлять книги читать. А новичку не интересны книги на начальном этапе. Ему практика нужна.
Частично с вами согласен, частично против, как я уже сказал один из самых действенных моментов при изучении является изучение готовых программ, но если большая часть кода вам не понятна, то лучше повозиться с теорией. Главное в любом случае держать под рукой книгу, в которой вы свободно ориентируетесь, тогда проще разбирать и примеры. Но начинать надо с простых примеров, плавно повышая сложность, как обычно делается в книгах, а спонтанна изучать программы разной сложности вперемешку это слегка глупо, так как для каждого есть грань воспринимаемости кода, если вам не понятно половина кода и затрудняетесь с ним разобраться, то стоит что-то попроще помучать в итоге через некоторое время подойдёте к этому коду с большим пониманием. Я обычно пользуюсь таким методом, что если мне что-то пока не понятно я всё воспринимаю, что так есть и должно быть, а со временем где-то натыкаюсь на объяснение таких не понятных в начале вещей. Воспринимая половину кода как есть конечно реально с ним разобраться поломав голову, но на может уйти больше времени, чем плавный переход к примерам такой сложности.
0
Эксперт С++
 Аватар для MikeSoft
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
05.07.2010, 18:32
Цитата Сообщение от assu Посмотреть сообщение
А новичку не интересны книги на начальном этапе.
То есть, вы считаете нормальным, что на начальном этапе человек начинает писать браузер, да?
А потом у него возникает вопрос: а что такое unsigned int?

Нужно знать основы языка! Если бы люди понимали что такое "класс" и знали, что у него могут существовать методы, которые показывает IDE - половина вопросов отпала бы!

Как и в данном случае: Нужно написать кодер текста, дайте пример, прокомментируйте каждую строчку!
В интернете есть исходники Windows 2000. Готовые! Компилируй - не хочу.
Так давайте же писать операционные системы (А что тут плохого? За нас же уже всё сделали, надо только теорию почитать).

Всё, что я привёл выше - лень, ведущая за собой начало глобальной деградации.
Есть раздел фриланс - заказываем описание - получаем код (полностью)!
А этот раздел создан для помощи тем, у кого что-то не получается.

На первой странице данной темы я дал описание, как можно выбраться из ситуации.
Им кто-то воспользовался? Уверен, что нет! А зачем? Готовый код же уже кинули...

А вот если бы человек попробовал сам это написать - у него уже был бы небольшой опыт работы с символьным массивом char и он бы стремился получить больше знаний.
0
 Аватар для serrg
70 / 70 / 4
Регистрация: 02.07.2010
Сообщений: 228
05.07.2010, 19:20
MikeSoft, вы немного не правы, в написание программы есть 3 аспекта:
1)Изучение теории о задаче в практическом плане (что представляет собой текст, как работает шифратор, что меняет т.д.)
2)Составление алгоритма (взять текст, поменять код символа по следующей формуле ___ и т.д.)
3)Кодирование алгоритма.

Если человек не может закодировать простейший алгоритм то ему прямой путь в книги, но в тот-же момент нельзя писать код когда нет алгоритма, вы ему в самом начале кинули вкратце алгоритм, только от него нет толку даже если есть минимум знаний по 3-му аспекту. Я кинул готовую программу, если поймёт, его счастье (по крайней мере исходя из базовых знаний языка можно понять алгоритм). Второй кинутый код сам по себе тоже не сложен да и короток, но без базовых знаний по первому и третьему аспекту тоже трудно понять.

Готовый код и минимум знаний по первому и третьему аспекту позволяют углубиться в обоих и познать их, но единственное надо начинать с более простого.
0
Эксперт С++
 Аватар для MikeSoft
3956 / 1811 / 184
Регистрация: 21.11.2009
Сообщений: 2,540
05.07.2010, 19:45
Цитата Сообщение от serrg Посмотреть сообщение
MikeSoft, вы немного не правы
Так мне всё же интересно, в чём же я не прав?

Давайте взглянем на тему. Первое сообщение автора:
Цитата Сообщение от ProstoMad Посмотреть сообщение
Кодировать текст например каждую букву заменять на другую, стоящую через одну в алфавите
Этим самым мы выясняем, что ваш первый пункт автору известен.
Он знает как должен работать шифратор и уже немного вникает во второй пункт (алгоритмом замены является одна строчка, осталось только разобраться с файлами).
Об открытии и чтении файлов вопрос не стоит - можно сделать вывод, что это или 100% понятно или не ясно совсем.

Предположим, что совсем не ясно.

Скажите мне, что мешает в этом случае объявить обычный символьный массив и научиться работать с ним?!
Уйти от чтения файлов. Реализовать саму идею замены.
Это же по сути две строчки для единичного случая:
C++
1
2
char text[1] = "a", code[1];
code[0] = char(int(text[0])+1);
Вот он, самый тривиальный кодер. Послали на вход "a", получили на выходе "b".

И вот скажите, какие нужно знания иметь, чтобы это не сделать?
Это один из первых уроков по работе с char (в любой литературе идёт речь о том, что можно получить ASCII значение символа).
Отсюда делаем вывод: литература, касающаяся С++ не читалась и к вашему пункту 3 переходить нельзя.
0
50 / 40 / 5
Регистрация: 30.06.2010
Сообщений: 1,191
05.07.2010, 21:44  [ТС]
С книгами как то не очень учится)) на пимерах гораздо лучше...
создавая что либо всегда ведь берешь что то от того что знаешь.
кто нить знает ссылку, где массивы понятно объясняются?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.07.2010, 21:44
Помогаю со студенческими работами здесь

кодирование
надо написать курсовик в инете нечего не нашел только декодирование на вашем сайте собственно нужно написать кодер/декодер методам...

Кодирование информации
Написать программу кодирующую данный текст, используя Form в C++builder Задание № 1. Тема &quot;Кодирование информации&quot; ...

Кодирование/Декодирование
Добрый вечер! Народ выручайте))) Имеется функция, которая как кодирует так и декодирует текст: AnsiString XOR_Crypt(AnsiString in,...

Жесткое кодирование
Есть задание в котором способ ввода жесткое кодирование, собственно этого я и не знаю. Объясните пожалуйста данную штуку.

Кодирование Хаффмана
Помогите написать программу для кодирования и декодирования строк вида &quot;a_!slf&quot; с помощью метода Хаффмана через частотный код. Может...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru