Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 05.02.2009, 22:27
Аватар для Innka
Innka Innka вне форума
Прохожий
 
Регистрация: 05.02.2009
Сообщения: 1
Репутация: 10
Смущение Шифрование текста

Нужно написать вот такую программку:
Шифрование текста по ограниченному словарю (от пяти до десяти знаков).

Делфи вижу впервые, помогите пожалуйста!!!
Заранее спасибо
Ответить с цитированием
  #2  
Старый 19.03.2009, 22:38
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Что значит "ограниченный словарь"?
Насколько сильная защита тебе нужна?
Ответить с цитированием
  #3  
Старый 20.03.2009, 19:17
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Возможно автор имел ввиду ограничение длины пароля до нужного количества знаков.
Ответить с цитированием
  #4  
Старый 20.03.2009, 20:04
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Если так, то вот пример:

Ограничение пароля до 8ми символов.

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
pas,rez:string;
i,n:integer;
begin

rez:='je5gDfwL'; //Задаем начальное значение,длина должна быть равна n (см.ниже)
pas:=edit1.Text; //получаем пароль

n:=8;  // ограничиваем длину "рабочей" части пароля

if length(pas)<n then n:=length(pas);

for i:=1 to n do
 begin
  rez[i]:=pas[i];  //записываем пароль в результат
 end;

edit2.Text:=rez; //не обязательно, просто для проверки результата

end;

lmikle: Сделал красиво, а где теги кода???

А дальше нужно решить какой будет сам шифр.

Последний раз редактировалось Konrad, 20.03.2009 в 20:24.
Ответить с цитированием
  #5  
Старый 20.03.2009, 22:12
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, для простоты сделай шифрование XOR'ом.

Код:
function Encode(AText, APass : String) : String;
var
  I : Integer;
  ALongPass : String;
begin
  If (Length(APass) < 5) Or (Length(APass) > 8) Then
     Raise Exception.Create('Пароль короче 5 или длиннее 8 символов.');
  Result := AText;

  // Для простоты делаем строку пароля кодирования
  // такой же длинны, что и данные. Просто копируя пароль.
  ALongPass := '';
  While Length(ALongPass) < Length(AText) Do
     ALongPass := ALongPass + APass;

  // А теперь шифруем XOR'ом
  For I := 1 To Length(AText) Do
    Result[i] := Chr(Ord(Result[i]) XOR Ord(ALongPass[i]));
end;
Ответить с цитированием
  #6  
Старый 20.03.2009, 22:25
Аватар для Konrad
Konrad Konrad вне форума
Эксперт
 
Регистрация: 19.03.2009
Сообщения: 1,261
Репутация: 45834
По умолчанию

Я вот тоже сразу подумал о ХОR, но тут лучше знать какой уровень надежности нужен, какой тип данных будет шифроваться, от кого защита и т.д. ( хотя бы приблизительно). Это очень важно для выбора типа шифра.
Ответить с цитированием
  #7  
Старый 20.03.2009, 22:36
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

я думаю, что это либо лаба, либо курсач. Так что особой надежности тут не надо
Ответить с цитированием
  #8  
Старый 01.04.2009, 15:51
Аватар для AleD
AleD AleD вне форума
Активный
 
Регистрация: 21.02.2009
Адрес: г.Краснокаменск
Сообщения: 383
Репутация: 91
По умолчанию

Цитата:
Сообщение от lmikle
Ну, для простоты сделай шифрование XOR'ом.

Код:
function Encode(AText, APass : String) : String;
var
  I : Integer;
  ALongPass : String;
begin
  If (Length(APass) < 5) Or (Length(APass) > 8) Then
     Raise Exception.Create('Пароль короче 5 или длиннее 8 символов.');
  Result := AText;

  // Для простоты делаем строку пароля кодирования
  // такой же длинны, что и данные. Просто копируя пароль.
  ALongPass := '';
  While Length(ALongPass) < Length(AText) Do
     ALongPass := ALongPass + APass;

  // А теперь шифруем XOR'ом
  For I := 1 To Length(AText) Do
    Result[i] := Chr(Ord(Result[i]) XOR Ord(ALongPass[i]));
end;

А как расшифровать то потом такой способ ???
__________________
TAleD = class(TUser)
public
function HelpMe(ASubject, ARequest: String): String;
function GiveMeExample(ASubject: String): TStringList;
procedure WriteReview(APost: Integer; ADescription: TStringList);
end;
Ответить с цитированием
  #9  
Старый 01.04.2009, 16:46
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Точно так же. Тем же XOR'ом тем же паролем.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:49.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025