|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
03.04.2010, 14:39 | #1 |
Регистрация: 17.03.2009
Сообщений: 5
|
нужно разобратся с кодом
Мне нужно разобратся с этим кодом, желательно комментарии над каждой строчки кода
|
03.04.2010, 14:39 | #2 |
Регистрация: 17.03.2009
Сообщений: 5
|
unit max_unit;
interface const STRT_E = $0b0b; const STRT_D = $b1b1; const NMBR = 11; type word32 = LongWord ; Pword32 = ^word32; Word32Arr = array of word32; u1 = Byte; twy_ctx = record k,ki:Word32Arr;//2+1 ercon,drcon:Word32Arr;//NMBR+1 end; procedure mu(var a:Word32Arr); procedure gamma(var a:Word32Arr); procedure theta(var a:Word32Arr); procedure rndcon_gen(strt:word32;var rtab:Word32Arr); procedure twy_key(var c:twy_ctx; var key:Word32Arr); procedure encrypt(c:twy_ctx; var a:Word32Arr); procedure twy_enc(var c:twy_ctx; var data:Word32Arr;blkcnt:integer); procedure twy_dec(var c:twy_ctx; var data:Word32Arr;blkcnt:integer); procedure decrypt(c:twy_ctx; var a:Word32Arr); implementation procedure mu(var a:Word32Arr); var i:integer; b:array[0..2] of word32; begin b[0] := 0; b[1] := 0; b[2] := 0; for i:=0 to 31 do begin b[0] := b[0] shl 1; b[1] := b[1] shl 1; b[2] := b[2] shl 1; if (a[0] and 1)<>0 then b[2] := b[2] or 1; if (a[1] and 1)<>0 then b[1] := b[1] or 1; if (a[2] and 1)<>0 then b[0] := b[0] or 1; a[0] := a[0] shr 1; a[1] := a[1] shr 1; a[2] := a[2] shr 1; end; a[0] := b[0]; a[1] := b[1]; a[2] := b[2]; end; procedure gamma(var a:Word32Arr); var b:array[0..2] of word32; begin b[0] := a[0] xor (a[1] or (not a[2])); b[1] := a[1] xor (a[2] or (not a[0])); b[2] := a[2] xor (a[0] or (not a[1])); a[0] := b[0]; a[1] := b[1]; a[2] := b[2]; end; procedure theta(var a:Word32Arr); var b:array[0..2] of word32; begin b[0] := a[0] xor (a[0] shr 16) xor (a[1] shl 16) xor (a[1] shr 16) xor (a[2] shl 16) xor (a[1] shr 24) xor (a[2] shl 8) xor (a[2] shr 8) xor (a[0] shl 24) xor (a[2] shr 16) xor (a[0] shl 16) xor (a[2] shr 24) xor (a[0] shl 8); b[1] := a[1] xor (a[1] shr 16) xor (a[2] shl 16) xor (a[2] shr 16) xor (a[0] shl 16) xor (a[2] shr 24) xor (a[0] shl 8) xor (a[0] shr 8) xor (a[1] shl 24) xor (a[0] shr 16) xor (a[1] shl 16) xor (a[0] shr 24) xor (a[1] shl 8); b[2] := a[2] xor (a[2] shr 16) xor (a[0] shl 16) xor (a[0] shr 16) xor (a[1] shl 16) xor (a[0] shr 24) xor (a[1] shl 8) xor (a[1] shr 8) xor (a[2] shl 24) xor (a[1] shr 16) xor (a[2] shl 16) xor (a[1] shr 24) xor (a[2] shl 8); a[0] := b[0]; a[1] := b[1]; a[2] := b[2] ; end; procedure pi_1(var a:Word32Arr); begin a[0] := (a[0] shr 10) xor (a[0] shl 22); a[2] := (a[2] shl 1) xor (a[2] shr 31); end; procedure pi_2(var a:Word32Arr); begin a[0] := (a[0] shl 1) xor (a[0] shr 31); a[2] := (a[2] shr 10) xor (a[2] shl 22); end; procedure rho(var a:Word32Arr); begin theta(a); pi_1(a); gamma(a); pi_2(a); end; procedure rndcon_gen(strt:word32;var rtab:Word32Arr); var i:integer; begin for i:=0 to NMBR do begin rtab[i] := strt; strt := strt shl 1 ; if (strt and $10000)<>0 then strt := strt xor $11011 ; end; end; procedure encrypt(c:twy_ctx; var a:Word32Arr); var i:integer; begin for i:=0 to NMBR-1 do begin a[0] :=a[0] xor c.k[0] xor (c.ercon[i] shl 16) ; a[1] :=a[1] xor c.k[1]; a[2] :=a[2] xor c.k[2] xor c.ercon[i]; rho(a) ; end; a[0] :=a[0] xor c.k[0] xor (c.ercon[NMBR] shl 16) ; a[1] :=a[1] xor c.k[1]; a[2] :=a[2] xor c.k[2] xor c.ercon[NMBR] ; theta(a) ; end; procedure decrypt(c:twy_ctx; var a:Word32Arr); var i:integer; begin mu(a); for i:=0 to NMBR-1 do begin a[0] :=a[0] xor c.ki[0] xor (c.drcon[i] shl 16) ; a[1] :=a[1] xor c.ki[1]; a[2] :=a[2] xor c.ki[2] xor c.drcon[i]; rho(a); end; a[0] :=a[0] xor c.ki[0] xor (c.drcon[NMBR] shl 16) ; a[1] :=a[1] xor c.ki[1]; a[2] :=a[2] xor c.ki[2] xor c.drcon[NMBR] ; theta(a); mu(a); end; Последний раз редактировалось arthur457; 03.04.2010 в 14:42. |
03.04.2010, 14:40 | #3 |
Регистрация: 17.03.2009
Сообщений: 5
|
procedure twy_key(var c:twy_ctx; var key:Word32Arr);
begin c.ki[0] := key[0]; c.k[0] := key[0]; c.ki[1] := key[1]; c.k[1] := key[1]; c.ki[2] := key[2]; c.k[2] := key[2]; theta(c.ki); mu(c.ki); rndcon_gen(STRT_E,c.ercon); rndcon_gen(STRT_D,c.drcon); end; procedure twy_enc(var c:twy_ctx; var data:Word32Arr;blkcnt:integer); var i,k:integer; temp:Word32Arr; begin SetLength(temp,3); k:=0; for i:=0 to blkcnt-1 do begin temp[0] := data[k]; temp[1] := data[k+1]; temp[2] := data[k+2]; encrypt(c,temp); data[k] := temp[0]; data[k+1] := temp[1]; data[k+2] := temp[2]; k:=k+3; end; temp := nil; end; procedure twy_dec(var c:twy_ctx; var data:Word32Arr;blkcnt:integer); var i,k:integer; temp:Word32Arr; begin SetLength(temp,3); k:=0; for i:=0 to blkcnt-1 do begin temp[0] := data[k]; temp[1] := data[k+1]; temp[2] := data[k+2]; decrypt(c,temp); data[k] := temp[0]; data[k+1] := temp[1]; data[k+2] := temp[2]; k:=k+3; end; temp := nil; end; procedure twy_destroy(var c:twy_ctx); var i:integer; begin for i:=0 to 2 do begin c.k[i] := 0; c.ki[i] := 0; end; end; end. |
03.04.2010, 14:43 | #4 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
столь ужасный код(оформление) за бесплатно даже смотреть не хочу.
глаза жалко(про время вообще молчу). Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
помогите разобратся | Irina.is | Microsoft Office Excel | 1 | 17.06.2009 22:38 |
Помогите разобратся с заданием | Veselyn | Помощь студентам | 3 | 06.05.2009 16:49 |
помогите разобратся с ListView | Icor | Win Api | 3 | 01.05.2009 16:24 |
Разобратся в Unicode компоненты | aizon | Помощь студентам | 9 | 24.03.2008 11:25 |
Помогите разобратся!!! | rex2003 | Свободное общение | 1 | 18.02.2007 20:37 |