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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.09.2012, 14:13   #1
strekoza
Новичок
Джуниор
 
Регистрация: 11.09.2012
Сообщений: 4
По умолчанию Шифрование

Простой кляч замены придуманный торговцами в средние века для шифровки даты приезда и цены товара, доживший до начала века из за простоты и удобства. Торговцы заранее договаривались об общем ключевом слове, буквы которого обоначают цифрв по порядку букв в ключе. Напимер:
Р Е С П У Б Л И К А -ключ шифрования
0 1 2 3 4 5 6 7 8 9 - цифры исходного текста
Получаю сообщение ПРИБЫВАЮ ЕЛРПАС, торговцы читаю его как ПРИБЫВАЮ 16/03/93

Вот то что есть у меня:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  a:array [0..9] of char;
  i: integer;
  ss, s,k: string;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  s:=Edit1.Text;
  if length(s)=10 then
  begin
    ss:=s;
    for i=0 to 9 do
      k:=copy(ss,1,1)
      a[i]:=k;
      i:=i+1;
      ss:=delete(ss,1,1)
    else
      Edit1.Text:= 'Вы ввели не 10 символов';
  end;
end;

end.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 11.09.2012 в 15:36.
strekoza вне форума Ответить с цитированием
Старый 11.09.2012, 15:42   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а как торговцы отличали слово содержащее цифры (в вашем примере ЕЛРПАС) от других слов ?
это раз.

второе. Откуда появились разделители в дате? в расшифрованном тексте получается 160392

третье. вы неудачное событие выбрали для обработки текста (при чём здесь событие СОЗДАНИЯ формы?!
я бы предложил кинуть на форму кнопочку и назначить обработчик на эту кнопку.

четвёртное. а какая помощь Вам собственно нужна? что не получается?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.09.2012, 08:48   #3
strekoza
Новичок
Джуниор
 
Регистрация: 11.09.2012
Сообщений: 4
По умолчанию

вот мне и надо чтоб в форме было поле для шифра,для фразы для шифрования, а затем в следующем поле повлялась зашифрованная фраза
strekoza вне форума Ответить с цитированием
Старый 12.09.2012, 09:19   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
вот мне и надо чтоб в форме было поле для шифра,для фразы для шифрования, а затем в следующем поле повлялась зашифрованная фраза
теперь понятно.

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

зашифровать по данному алгоритму не очень сложно.
а вот расшифровать обратно - практически невыполнимо. почему? читайте мой первый вопрос в пост #2

Последний раз редактировалось Serge_Bliznykov; 12.09.2012 в 09:21.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.09.2012, 11:32   #5
strekoza
Новичок
Джуниор
 
Регистрация: 11.09.2012
Сообщений: 4
По умолчанию

Вот мне и надо только зашифровать, обратно расшифровывать не нужно! Помогит пожалуйста написать программу!
strekoza вне форума Ответить с цитированием
Старый 12.09.2012, 13:11   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Вы проигнорировали мой вопрос насчёт того, сами хотите научиться, или хотите остаться такой же "невеждой" в программировании, получив всё готовое..

ладно. Ваша воля.
ловите готовое решение.
SalerCrypter.rar

суть решения:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var sKey, sText, sCryptoText : String;
  i,j : integer;
begin
  sKey := AnsiUpperCase(Trim(edKey.Text));
  edKey.Text := sKey;
  if Length(sKey)<>10 then
     Application.MessageBox('Ключ должен быть 10 символов длиной!', 'Ошибка!', MB_ICONERROR or MB_OK)
  else begin
    // проверим, что все символы в ключе только буквы и что они все различаются
    for i := 1 to Length(sKey)-1 do begin
      if Not (sKey[i] in ['А'..'Я','A'..'Z']) then begin
         Application.MessageBox('В ключе должны быть только буквы!',
              'Ошибка!', MB_ICONERROR or MB_OK);
         Exit;
      end;
      for j := i+1 to Length(sKey) do
        if sKey[i]=sKey[j] then begin
         Application.MessageBox('Буквы в ключе не должны дублироваться!',
              'Ошибка!', MB_ICONERROR or MB_OK);
         Exit;
        end;
    end;  // - всё, проверка завершена.

    //кодирование текста из MEMO
    sText := mSource.Text;
    sCryptoText := '';

    for i := 1 to Length(sText) do
      if sText[i] in ['0'..'9']
          then // если ЦИФРА, то кодируем её
            sCryptoText := sCryptoText + sKey[ StrToInt(sText[i]) +1 ]
                 {+1 нужен, т.к. цифры идут от нуля до 9, а символы в строке - от 1 до 10}
                 
          else // если не ЦИФРА, то просто дописываем символ в кодированный текст
            sCryptoText := sCryptoText + sText[i];

    // отобразим результат шифрования в мемо
    mCrypto.Text := sCryptoText;

    // FINITA!
  end;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.09.2012, 15:48   #7
strekoza
Новичок
Джуниор
 
Регистрация: 11.09.2012
Сообщений: 4
По умолчанию

Спасибо большое, сейчас испробую!
strekoza вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++. Шифрование. Bernard Помощь студентам 2 30.05.2011 13:25
ШИФРОВАНИЕ fobass Работа с сетью в Delphi 4 14.06.2010 20:32
Шифрование gusluk Работа с сетью в Delphi 6 12.04.2010 04:33
Шифрование SnowSin Помощь студентам 0 13.12.2009 12:14
Шифрование Stanislav Общие вопросы Delphi 2 15.11.2007 21:56