type TForm1 = class(TForm) Label1: TLabel; EditPassword: TEdit; ButtonEncrypt: TButton; MemoOutput: TMemo; procedure ButtonEncryptClick(Sender: TObject); private function VigenereEncrypt(const InputText, Key: string): string; public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.lfm}
// Функция для шифрования текста с использованием шифра Виженера function TForm1.VigenereEncrypt(const InputText, Key: string): string; var i, j: Integer; KeyLength: Integer; EncryptedChar: Char; begin Result := ''; KeyLength := Length(Key); j := 1;
for i := 1 to Length(InputText) do begin // Проверяем, является ли символ буквой if InputText[i] in ['A'..'Z', 'a'..'z'] then begin if j > KeyLength then j := 1; // Сбрасываем индекс ключа
// Шифруем символ if InputText[i] in ['A'..'Z'] then EncryptedChar := Chr(((Ord(InputText[i]) - Ord('A') + (Ord(Key[j]) - Ord('A'))) mod 26) + Ord('A')) else EncryptedChar := Chr(((Ord(InputText[i]) - Ord('a') + (Ord(Key[j]) - Ord('a'))) mod 26) + Ord('a'));
Result := Result + EncryptedChar; Inc(j); // Переходим к следующему символу ключа end else Result := Result + InputText[i]; // Не шифруем не буквенные символы end; end;
// Обработчик нажатия кнопки procedure TForm1.ButtonEncryptClick(Sender: TObject); var Password: string; Key: string; begin Password := EditPassword.Text; Key := 'KEY'; // Задайте ключ для шифрования (можно сделать вводимым)
// Зашифровать пароль и вывести результат в Memo MemoOutput.Lines.Text := VigenereEncrypt(Password, Key); end;
Это не delphi, а lazarus. Я еще пишу на delphi. На нём пишу sql скрипты для поддержания в актуальном состоянии бд, выполняю парсинг json файлов и много чего еще.
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
EditPassword: TEdit;
ButtonEncrypt: TButton;
MemoOutput: TMemo;
procedure ButtonEncryptClick(Sender: TObject);
private
function VigenereEncrypt(const InputText, Key: string): string;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
// Функция для шифрования текста с использованием шифра Виженера
function TForm1.VigenereEncrypt(const InputText, Key: string): string;
var
i, j: Integer;
KeyLength: Integer;
EncryptedChar: Char;
begin
Result := '';
KeyLength := Length(Key);
j := 1;
for i := 1 to Length(InputText) do
begin
// Проверяем, является ли символ буквой
if InputText[i] in ['A'..'Z', 'a'..'z'] then
begin
if j > KeyLength then
j := 1; // Сбрасываем индекс ключа
// Шифруем символ
if InputText[i] in ['A'..'Z'] then
EncryptedChar := Chr(((Ord(InputText[i]) - Ord('A') + (Ord(Key[j]) - Ord('A'))) mod 26) + Ord('A'))
else
EncryptedChar := Chr(((Ord(InputText[i]) - Ord('a') + (Ord(Key[j]) - Ord('a'))) mod 26) + Ord('a'));
Result := Result + EncryptedChar;
Inc(j); // Переходим к следующему символу ключа
end
else
Result := Result + InputText[i]; // Не шифруем не буквенные символы
end;
end;
// Обработчик нажатия кнопки
procedure TForm1.ButtonEncryptClick(Sender: TObject);
var
Password: string;
Key: string;
begin
Password := EditPassword.Text;
Key := 'KEY'; // Задайте ключ для шифрования (можно сделать вводимым)
// Зашифровать пароль и вывести результат в Memo
MemoOutput.Lines.Text := VigenereEncrypt(Password, Key);
end;
end.