Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.09.2011, 06:56   #1
Anton911
Форумчанин
 
Аватар для Anton911
 
Регистрация: 23.08.2011
Сообщений: 171
Вопрос Кодировка шестью символами

Вобщем создал программу которая работает через сокеты,
программа работает нормально, но передает данные "открыто". Вобщем мне нужно закодировать передаваемую информацию.
Я решил сделать кодировку шестью симолами. Вот например:
A=qdzanq
B=dqzadn
C=qdazqa
D=qdzaqd
E=znadqz
F=adqazq и т.д.
Руским, английским символам, цифрам и другим знакам,
придумал подобные значения. Теперь вопрос, может быть знает кто-нибудь, как можно менее ресурсозатратно и
быстродейственно сделать кодировку\декодировку подобным
методом?
Каждый день узнаю новое...
Anton911 вне форума Ответить с цитированием
Старый 07.09.2011, 14:12   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Наименее ресурсозатратно будет выкинуть эту из головы эту жэсть, и взять любой вменяемый блочный шифр.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 07.09.2011, 16:30   #3
asmodey1
Подтвердите свой е-майл
 
Регистрация: 19.12.2010
Сообщений: 808
По умолчанию

Лень поискать ?
Ну вот, пожалуйста :
http://delphiworld.narod.ru/base/bas...de_decode.html
asmodey1 вне форума Ответить с цитированием
Старый 07.09.2011, 18:17   #4
Anton911
Форумчанин
 
Аватар для Anton911
 
Регистрация: 23.08.2011
Сообщений: 171
По умолчанию

Спасибо, что откликнулись, но почитав все это боюсь мозг не выдержит мой Можно ли какнибудь проще сделать шифровку, например если я буду использовать смещнеие номера сиволов с помощью inc(), dec().
А потом допустив в конец получившейся строки добавить число от 2 до 9 обозначающее как далеко символы сместились.
Каждый день узнаю новое...
Anton911 вне форума Ответить с цитированием
Старый 07.09.2011, 18:32   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

asmodey1, не согласен с Вашим советом. кодирование base64 не является шифрованием (автору же явно нужно не кодирование, а шифрование информации!)

вот с мнением veniside абсолютно согласен.


Anton911, не нужно использовать такое примитивное кодирование - это абсолютно ни от кого и ни от чего не защитит.
И, если у Вас нет базовых знаний по криптографии, не надо придумывать свои шифры. Поверьте, что ОЧЕНЬ умные люди уже очень много думали и много всего придумали!
Возьмите ЛЮБОЙ алгоритм шифрации (не хочется/лень писать самостоятельно - возьмите любую библиотечку. Ту же cipher - Delphi Encryption Compendium Part I by Hagen Reddmann - маленькая, в исходных кодах ну и полностью freeware. Либо любую другую библиотечку шифрования. Благо их море...)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.09.2011, 19:35   #6
asmodey1
Подтвердите свой е-майл
 
Регистрация: 19.12.2010
Сообщений: 808
По умолчанию

Цитата:
Шифрование (кодирование, encryption) - защита сообщения (информации) от несанкционированного просмотра или использования, основанная на преобразовании его в шифрованный текст.
Заодно можно еще перечитать название темы и первый пост
Цитата:
Сообщение от Anton911 Посмотреть сообщение
Вобщем мне нужно закодировать передаваемую информацию.
asmodey1 вне форума Ответить с цитированием
Старый 08.09.2011, 13:44   #7
Anton911
Форумчанин
 
Аватар для Anton911
 
Регистрация: 23.08.2011
Сообщений: 171
По умолчанию

Спасибо. Еще вопрос: Можно ли какнибудь проверить являетсяли тип переменной integer или string?
Каждый день узнаю новое...
Anton911 вне форума Ответить с цитированием
Старый 08.09.2011, 13:57   #8
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Храни данные в Variant а там определяй. Про работу с этим типом погугли...
Человек_Борща вне форума Ответить с цитированием
Старый 08.09.2011, 14:10   #9
Anton911
Форумчанин
 
Аватар для Anton911
 
Регистрация: 23.08.2011
Сообщений: 171
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Храни данные в Variant а там определяй. Про работу с этим типом погугли...
Про Variant я нашел:

Код:
procedure TForm1.ShowBasicVariantType(varVar: Variant);
var
  typeString : string;
  basicType  : Integer;

begin
  basicType := VarType(varVar) and VarTypeMask;

  case basicType of
    varEmpty     : typeString := 'varEmpty';
    varNull      : typeString := 'varNull';
    varSmallInt  : typeString := 'varSmallInt';
    varInteger   : typeString := 'varInteger';
    varSingle    : typeString := 'varSingle';
    varDouble    : typeString := 'varDouble';
    varCurrency  : typeString := 'varCurrency';
    varDate      : typeString := 'varDate';
    varOleStr    : typeString := 'varOleStr';
    varDispatch  : typeString := 'varDispatch';
    varError     : typeString := 'varError';
    varBoolean   : typeString := 'varBoolean';
    varVariant   : typeString := 'varVariant';
    varUnknown   : typeString := 'varUnknown';
    varByte      : typeString := 'varByte';
    varWord      : typeString := 'varWord';
    varLongWord  : typeString := 'varLongWord';
    varInt64     : typeString := 'varInt64';
    varStrArg    : typeString := 'varStrArg';
    varString    : typeString := 'varString';
    varAny       : typeString := 'varAny';
    varTypeMask  : typeString := 'varTypeMask';
  end;

  memoconsole.Lines.Add('Variant тип = '+typeString);
end;
Пробовал извлеч тип так:
Код:
temp:=Copy(s,1,Pos('$',s)-1);
Delete(s,1,Pos('$',s));
myvar:=temp;
ShowBasicVariantType(myvar);
В var temp имеет тип string. Но в temp:=Copy(s,1,Pos('$',s)-1); туда загружаются числа. В итоге мне в memo1 выдаёт: Variant тип =
Что я делаю не так?
Каждый день узнаю новое...
Anton911 вне форума Ответить с цитированием
Старый 08.09.2011, 16:54   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Что я делаю не так?
Вы просто не понимаете базисных основ.
Если у Вас есть переменная типа var temp : string;
то что бы Вы с ней в программе не делали, она всё равно будет переменная типа string. (более того, если попытаетесь её где-то использовать, где тип string не допустим, то получите ошибку о несовместимости типов в выражении.

Цитата:
temp:=Copy(s,1,Pos('$',s)-1); туда загружаются числа
от того, что в строке находятся числа, строка не перестаёт быть строкой
(посмотрите в help'е/документации программные преобразования строки в число - процедура VAL() и функцию StrToInt() )

а ещё лучше скажите, что Вам нужно, Вам подскажут и приведут пример рабочего и правильного кода...
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кодировка utf8. Работа с символами. Перевод русских букв в латинских аналог dr.Chas PHP 3 24.03.2011 16:47
Задача с символами pasha1993 Помощь студентам 5 13.10.2010 12:15
задача с символами с++ kate311893 Помощь студентам 6 19.09.2010 20:11
Рисование символами. (*_*) Общие вопросы C/C++ 2 04.03.2009 23:03