Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
путя
0 / 0 / 0
Регистрация: 04.10.2013
Сообщений: 1
#1

аппаратная реализация декодирования цк 15 11 - Delphi

08.10.2013, 05:45. Просмотров 275. Ответов 0
Метки нет (Все метки)

Необходимо учесть в программе, что нумерация разрядов в ЦК – справа налево

Т.е. если вводится номер искаженного разряда 14, то должен меняться второй слева разряд
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
BitBtn1: TBitBtn;
MainMenu1: TMainMenu;
BitBtn2: TBitBtn;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
Panel1: TPanel;
Memo1: TMemo;
Label7: TLabel;
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Edit3KeyPress(Sender: TObject; var Key: Char);
procedure Button4Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure Label7Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure N3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
iter:Integer;

implementation

{$R *.dfm}
function COD(s:string):string; // функция шифрует переданный фрагмент
var i:Integer; // переменная для цикла
m:string; // порождающий многочлен
begin
m:='11001';
SetLength(Result,5); // прописываем длину строки
for i:=1 to 5 do Result[i]:=IntToStr((StrToInt(s[i])+StrToInt(m[i])) mod 2)[1];
// шифруем полученный бит
Result:=IntToStr(StrToInt(Result)); // получаем результат без начальных нулей
end;

function Chifr(str:string):string;
// функция кодирует исходный код
// возвращает закодированные данные
var i,l,all:Integer; // itog - контролируем количество "использованых" в кодировании символов
s,st,s1:string;
begin
all:=0;
st:=str+'0000'; // приписываем нули к информационной части кода
s1:=COD(Copy(st,1,5)); // шифровка первых 6 символов
all:=all+5;
while all<length(str)+4 do begin
s:=s1+Copy(st,all+1,5-length(s1)); // добавляем к обработанному фрагменту символы, чтобы дина составляла 5
all:=all+5-length(s1); // считаем количество "использованых" символов
if length(s) = 5 then s1:=COD(s) else s1:=s; // проверка условия завершения шифрования, по длине оставшейся части
end;
l:=length(s1); // длина полученной комбинации
for i:=1 to 4-l do s1:='0'+s1; // добавление к получившемуся коду нулей до достижения длины в 5 символов
Result:=str+s1; // получение итоговой избыточной комбинации
end;

function Raschifr(str:string):string;
// функция выполняет дешифрование кода, возвращает остаток от деления
var all,i,l:Integer; // itog - для контроля за номером текущего символа
s,st,s1:string;
begin
all:=0;
st:=str;
s1:=COD(Copy(st,1,5)); // дешифровка первых 5 символов
all:=all+5;
while all<length(str) do begin
s:=s1+Copy(st,all+1,5-length(s1)); // добавление к обработанному фрагменту символы, чтобы длина составляла 5
all:=all+5-length(s1); // фиксация номера последнего использованного символа
if length(s)=5 then s1:=COD(s) else s1:=s; // проверка условия завершения дешифрования
end;
l:=length(s1); // длина полученной комбинации
for i:=1 to 4-l do s1:='0'+s1; // добавление к остатку нулей для достижения длины равной5
Result:=s1; // получаем результат
end;


procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin // распознание на ввод "0" и "1"
if Key in ['0','1'] then
if length(Edit1.Text)=11 then Key:=Chr(0) else Key:=Key
else Key:=Chr(0);

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
iter:=0; // обнуление счётчика сдвига влево
Edit2.Text:=Chifr(Edit1.Text); // запускаем функцию кодирования
end;
function MakeError(str:string; n,len:Byte) : string;// функция искажения заданных битов
begin
if str[n]='1' then str[n]:='0' else str[n]:='1'; // меняем бит на противоположный
Result:=str;
end;

procedure TForm1.Button2Click(Sender: TObject);
var n:Integer;
begin
if Edit3.Text='' then n:=0 else n:=StrToInt(Edit3.Text); // исправление некорректно введенных данных
Edit4.Text:=MakeError(Edit2.Text,n,length(Edit2.Text)); // запуск функции искажения разряда

end;

procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
begin // обеспечение корректного ввода данных
if not (Key in ['0','1','2','3','4','5','6','7','8','9']) then Key:=Chr(0);
end;
function vlevo(str:string):string;// вводим функция для осуществления сдвига влево
var s:string; i,len:Integer;
begin
len:=length(str);
SetLength(s,len);
for i:=1 to len-1 do s[i]:=str[i+1];
s[len]:=str[1];
Result:=s;
end;

function vpravo(str:string):string;// вводим функцию для осуществления сдвига вправо
var s:string; i,len:Integer;
begin
len:=length(str);
SetLength(s,len);
for i:=1 to len-1 do s[i+1]:=str[i];
s[1]:=str[len];
Result:=s;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
form1.close;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Edit4.Text:=vlevo(Edit4.Text); // запускаем функцию сдвига влево
iter:=iter+1; // считаем количество сдвигов влево
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Edit5.Text:=Raschifr(Edit4.Text); // запускаем функцию декодирования
end;

procedure TForm1.Button5Click(Sender: TObject);
var i,len,l:Integer; s,kor,err:string;
begin
kor:=Edit5.Text;
err:=Edit4.Text;
len:=length(err); // длина искаженной комбинации
l:=length(kor); // длина остатка
s:=err;
for i:=0 to l-1 do s[len-i]:=IntToStr((StrToInt(err[len-i])+StrToInt(kor[l-i])) mod 2)[1];
for i:=1 to Tag do s:=vpravo(s); // сдвигаем полученную комбинацию вправо
Edit6.Text:=s; // выводим полученный результат
end;

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:='';
edit5.Text:='';
edit6.Text:='';
end;

procedure TForm1.Label7Click(Sender: TObject);
begin
panel1.visible:=false;
end;

procedure TForm1.N2Click(Sender: TObject);
begin
panel1.Visible:=true;
end;

procedure TForm1.N5Click(Sender: TObject);
begin
showmessage();
end;

procedure TForm1.N4Click(Sender: TObject);
begin
form1.Close;
end;

procedure TForm1.N3Click(Sender: TObject);
begin
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:='';
edit5.Text:='';
edit6.Text:='';
end;

end.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2013, 05:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос аппаратная реализация декодирования цк 15 11 (Delphi):

Аппаратная реализация AES шифра - Криптография
Всем доброго времени суток. Мне необходимо реализовать (!)аппаратное(!) шифрование блочным шифром AES. Есть ли уже какие нибудь...

Аппаратная организация - Процессоры
Всем привет! Подскажите пожалуйста что значит аппаратная реализация. Ну то есть, некоторые действия в системе могут быть реализованы...

Аппаратная виртуализация - Материнские платы
Материнская плата ASUS P8H67-V. Как настроить для нее аппаратное ускорение, а то virtualbox его запрашивает?

Аппаратная виртуализация - Процессоры
Поддерживает ли процессор AMD A6-3410mx аппаратную виртуализацию?

Аппаратная платформа - C++
Добрый день! Подскажите пожалуйста, как написать программу, которая может запускаться только на определённой аппаратной платформе? ...

Аппаратная кнопка back - C# WPF
Проблема с аппаратной кнопкой назад. Прописала код, но он не действует на нее. Где может быть ошибка? =) public partial class Page7 :...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2013, 05:45
Привет! Вот еще темы с ответами:

Аппаратная ошибка видео - Видеокарты
Скриншот прилагается. Повторяется постоянно, уже полгода, при тестах на играх. Навороченность игры и ее новизна, при этом, роли не...

Аппаратная защита от DDoS - Сетевое оборудование
Доброго всем времени суток. Поставил сервер и столкнулся с тем, что у меня отсутствует какая бы то ни была защита от DDoS атак. ...

Аппаратная виртуализация на 64-bit хосте - Эмуляторы
Доброго всем времени суток! На ноуте стоит Win 8 (64-bit). Хочу установить VirtualBox (встроенный Hyper-V не включен, включать не...

Аппаратная ошибка настройки диска - Windows XP
После установки Windows XP создалось 3 диска на нетбуке, а само система установлена на диске F... При загрузке сначало писало нет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.