Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Оцените алгоритм шифрования 
:(
    Опции темы
Phoenix555
Дата 4.5.2006, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 4.5.2006
Где: Sterlitamak

Репутация: нет
Всего: нет



собвственно вот тест
Код

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Memo1: TMemo;
    Memo2: TMemo;
    Button1: TButton;
    Panel1: TPanel;
    Button2: TButton;
    XPManifest1: TXPManifest;
    Procedure MKey(tk:string);
    procedure Edit1Change(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure dis;
    procedure ena;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  ak:array [1..8] of byte;
implementation

{$R *.dfm}

procedure tform1.dis;
begin
button1.Enabled:=false;
button2.Enabled:=false;
end;
procedure tform1.ena;
begin
button1.Enabled:=not false;
button2.Enabled:=not false;
end;

Procedure TForm1.MKey(tk:string);
var
i,l,k,o:byte;
b:bool;
begin
  if length(tk)=0 then
  begin
    for i:=1 to 8 do ak[i]:=0;
  end else
  begin
  l:=length(tk);
  //----------------------01
  for i:=1 to l do
  begin
    o:=ord(tk[i]);
    b:=not b;
    if b = true then
      k:=i+k*i+o*i+o*k+o*k*i
    else
      k:=i*(l*l-i*i)*o+o*k*o+i*i*i;
  end;
  ak[1]:=k;k:=0;
  //----------------------02
  for i:=1 to l do
  begin
    o:=ord(tk[i]);
    b:=not b;
    if b = true then
      k:=i*i+l*i+o*o
    else
      k:=i*(l-i)*o+o*o*o+i*i*i;
  end;
  ak[2]:=k; 
  //----------------------03
  for i:=1 to l do
  begin
    o:=ord(tk[i]);
    b:=not b;
    if b = true then
      k:=k*(i+o*4)+k*o+k
    else
      k:=k*4-o*(k+o*(l-i))+o*(-1);
  end;
  ak[3]:=k;k:=0;
  //----------------------04
  for i:=1 to l do
  begin
    o:=ord(tk[i]);
    b:=not b;
    if b = true then
      k:=k*(i*3+o*4)-k*(o-256)+k
    else
      k:=k*o*(k*o+i*l)-o*o+k*i;
  end;
  ak[4]:=k;k:=0;
  //----------------------05
  for i:=1 to l do
  begin
    o:=ord(tk[(l-i)+1]);
    b:=not b;
    if b = true then
      k:=k+o*k*(l-i)+i*i*l
    else
      k:=k*(k*o+(l-i)*l)-o+k*(l-i);
  end;
  ak[5]:=k;k:=0;
  //----------------------06
  for i:=1 to l do
  begin
    o:=ord(tk[i])-127;
    b:=not b;
    if b = true then
      k:=k+o*l*k*i*(l-i)
    else
      k:=k+(l-i)*(l-i)*i*o+i*o*o;
  end;
  ak[6]:=k;k:=0;
  //----------------------07
  for i:=1 to l do
  begin
    o:=ord(tk[i])-127;
    b:=not b;
    if b = true then
      k:=k*o-o*i+o*(l+i)-o*(l-i)
    else
      k:=k*o-k*i+k*(l+i)-k*(l-i);
  end;
  ak[7]:=k;k:=0;
  //----------------------08
  for i:=1 to l do
  begin
    o:=ord(tk[i])-127;
    b:=not b;
    if b = true then
      k:=k+o*(l+i)-k*(l-i)
    else
      k:=k*o*o-o*(l+i)*k*((l-i)+o);
  end;
  ak[8]:=k;k:=0;
  end;
memo1.Clear;
memo1.lines.add(inttohex(ak[1],2));
memo1.lines.add(inttohex(ak[2],2));
memo1.lines.add(inttohex(ak[3],2));
memo1.lines.add(inttohex(ak[4],2));
memo1.lines.add(inttohex(ak[5],2));
memo1.lines.add(inttohex(ak[6],2));
memo1.lines.add(inttohex(ak[7],2));
memo1.lines.add(inttohex(ak[8],2));
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
if edit1.Text='' then
dis else ena;
MKey(edit1.Text);
end;

procedure TForm1.Button1Click(Sender: TObject);//полное шифрование
var
s,s1:string;
l1,l2,k,b,c:byte;
bo:bool;
i,i2,x:integer;
t:ttime;
begin
  t:=now;
  s:=memo2.Text;
  s1:=edit1.Text;
  MKey(s1);
  l1:=length(s1);
  l2:=length(s);
  c:=1;
  x:=ak[1]*ak[2]*ak[3]*ak[4]*ak[5]*ak[6]*ak[7]*ak[8];
  for i:=1 to length(s) do
  begin
    bo:=not bo;
    b:=ord(s[i]);
    //if b>31 then begin
    i2:=i*i;
    case bo of
    true:
    begin
      b:=b xor ord(s1[c])*i xor l2 xor l1 xor ord(s1[length(s1)-c]);
      b:=b xor ak[1] xor l1 xor i2 xor l2;
      b:=b xor ak[2]*i xor l2 xor l1;
      b:=b xor ak[3] xor l1 xor i2 xor l2;
      b:=b xor ak[4]*i xor l2 xor l1;
      b:=b xor ak[5] xor l1 xor i2 xor l2;
      b:=b xor ak[6]*i xor l2 xor l1;
      b:=b xor ak[7] xor l1 xor i2 xor l2;
      b:=b xor ak[8]*i xor l2 xor l1;
    end;
    false:
    begin
      b:=b xor ord(s1[length(s1)-c]) xor l1 xor i2 xor l2 xor ord(s1[c]);
      b:=b xor ak[8] xor l1 xor i2 xor l2;
      b:=b xor ak[7]*i xor l2 xor l1;
      b:=b xor ak[6] xor l1 xor i2 xor l2;
      b:=b xor ak[5]*i xor l2 xor l1;
      b:=b xor ak[4] xor l1 xor i2 xor l2;
      b:=b xor ak[3]*i xor l2 xor l1;
      b:=b xor ak[2] xor l1 xor i2 xor l2;
      b:=b xor ak[1]*i xor l2 xor l1;
    end;
    end;
      b:=b xor ord(s1[c]);
      b:=b xor l2*i xor i*l1*l1 xor l1*l2*i2;
      b:=b xor l2*i*l1 xor x;
    //if b>31 then
    if b>0 then
    s[i]:=chr(b);
    c:=c+1;
    if c>l1 then c:=1;
  end;
  memo2.Text:=s;
  s:='';
  beep; button1.caption:=formatdatetime('nn:ss:zzz',now-t);
end;

procedure TForm1.Button2Click(Sender: TObject);//шифрование с сохранением кол-ва строк
var
s,s1:string;
l1,l2,k,b,c:byte;
bo:bool;
i,i2,x:integer;
t:ttime;
begin
  t:=now;
  s:=memo2.Text;
  s1:=edit1.Text;
  MKey(s1);
  l1:=length(s1);
  l2:=length(s);
  c:=1;
  x:=ak[1]*ak[2]*ak[3]*ak[4]*ak[5]*ak[6]*ak[7]*ak[8];
  for i:=1 to length(s) do
  begin
    bo:=not bo;
    b:=ord(s[i]);
    if b>31 then begin
    i2:=i*i;
    case bo of
    true:
    begin
      b:=b xor ord(s1[c])*i xor l2 xor l1 xor ord(s1[length(s1)-c]);
      b:=b xor ak[1] xor l1 xor i2 xor l2;
      b:=b xor ak[2]*i xor l2 xor l1;
      b:=b xor ak[3] xor l1 xor i2 xor l2;
      b:=b xor ak[4]*i xor l2 xor l1;
      b:=b xor ak[5] xor l1 xor i2 xor l2;
      b:=b xor ak[6]*i xor l2 xor l1;
      b:=b xor ak[7] xor l1 xor i2 xor l2;
      b:=b xor ak[8]*i xor l2 xor l1;
    end;
    false:
    begin
      b:=b xor ord(s1[length(s1)-c]) xor l1 xor i2 xor l2 xor ord(s1[c]);
      b:=b xor ak[8] xor l1 xor i2 xor l2;
      b:=b xor ak[7]*i xor l2 xor l1;
      b:=b xor ak[6] xor l1 xor i2 xor l2;
      b:=b xor ak[5]*i xor l2 xor l1;
      b:=b xor ak[4] xor l1 xor i2 xor l2;
      b:=b xor ak[3]*i xor l2 xor l1;
      b:=b xor ak[2] xor l1 xor i2 xor l2;
      b:=b xor ak[1]*i xor l2 xor l1;
    end;
    end;
      b:=b xor ord(s1[c]);
      b:=b xor l2*i xor i*l1*l1 xor l1*l2*i2;
      b:=b xor l2*i*l1 xor x;
    end;
    if b>31 then
    //if b>0 then
    s[i]:=chr(b);
    c:=c+1;
    if c>l1 then c:=1;
  end;
  memo2.Text:=s;
  s:='';
  beep; button2.caption:=formatdatetime('nn:ss:zzz',now-t);
end;

procedure TForm1.FormShow(Sender: TObject);
begin
edit1.SetFocus;
end;

end.

только не пинайте ногами это моя первая более-менее толковая программа шифрования .... и мне нужна беспристрастная оценка
сам знаю что программа недоделанная и медленная .. меня больше всего интересует криптостойкость .. если она плохая, то есть просьба прокоментировать конктретный участок кода .. и если не лень дать совет по его улучшению
 

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  RealCrypt_D7.zip 13,91 Kb
PM MAIL   Вверх
Heremum
Дата 4.5.2006, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 7.4.2006

Репутация: нет
Всего: нет



Лучше выпиши алгоритм и дай народу на суд. не все владеют языком, на котором ты написал, а во-вторых вид исходного кода заранее отпугивает. Не охото расгребать. 
PM MAIL ICQ   Вверх
Phoenix555
Дата 4.5.2006, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 4.5.2006
Где: Sterlitamak

Репутация: нет
Всего: нет



1) из пароля высчитываются 8 байт - 65-149 строка
   учитывается длинна пароля, ASCI-номера символов, честность симоволов
2) заданый текст XOR-ится этими восьми байтами +длинной пароля +длинной текста +четностью символа(особый упор .. здесь алгоритм делится на две ветки) + наложением пароля +порядковым числом символа в тексте .. в различных комбинациях

пока контрольной суммы нету .. но елси оцентие программу, то мб займусь ею =)    

Это сообщение отредактировал(а) Phoenix555 - 4.5.2006, 18:22
PM MAIL   Вверх
SoWa
Дата 4.5.2006, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



Это не интересно...
Просто последовательность из уже известных действий. Я, например, элементарно закольцую и захеширую MD5.  И что, новый хеш я изобрел?! 


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Phoenix555
Дата 4.5.2006, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 4.5.2006
Где: Sterlitamak

Репутация: нет
Всего: нет



это один из первых моих шагов в криптографию ( просил же не пинаться  smile )
кто-нибудь может оценить криптостойкость ? 
PM MAIL   Вверх
SoWa
Дата 4.5.2006, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 6
Всего: 74



Судя по всему- маленькая... Догадаться можно...
Я тоже не криптограф, но придумать что нибудь дельное можно. Давай вместе думать? smile 


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0444 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.