![]() |
|
#1
|
||||
|
||||
![]() Нужно написать вот такую программку:
Шифрование текста по ограниченному словарю (от пяти до десяти знаков). Делфи вижу впервые, помогите пожалуйста!!! Заранее спасибо ![]() |
#2
|
||||
|
||||
![]() Что значит "ограниченный словарь"?
Насколько сильная защита тебе нужна? |
#3
|
||||
|
||||
![]() Возможно автор имел ввиду ограничение длины пароля до нужного количества знаков.
|
#4
|
||||
|
||||
![]() Если так, то вот пример:
Ограничение пароля до 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
|
|||
|
|||
![]() Ну, для простоты сделай шифрование 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
|
||||
|
||||
![]() Я вот тоже сразу подумал о ХОR, но тут лучше знать какой уровень надежности нужен, какой тип данных будет шифроваться, от кого защита и т.д. ( хотя бы приблизительно). Это очень важно для выбора типа шифра.
|
#7
|
|||
|
|||
![]() я думаю, что это либо лаба, либо курсач. Так что особой надежности тут не надо
![]() |
#8
|
||||
|
||||
![]() Цитата:
А как расшифровать то потом такой способ ![]() TAleD = class(TUser) public function HelpMe(ASubject, ARequest: String): String; function GiveMeExample(ASubject: String): TStringList; procedure WriteReview(APost: Integer; ADescription: TStringList); end; |
#9
|
|||
|
|||
![]() Точно так же. Тем же XOR'ом тем же паролем.
|