DictionaryForumContacts

 МН

link 12.01.2004 14:35 
Subject: Hamming distance attack
Как перевести Hamming distance attack в области шифрования?

Заранее благодарен.

 Alexander

link 12.01.2004 14:50 
расстояние Хэмминга (в криптоанализе по алгоритму Хэмминга)

 Arsen

link 13.01.2004 1:29 
Согласен с тем, что это "расстояние Хэмминга". Но нельзя ли поподробнее про "криптоанализ по алгоритму Хэмминга"? Хэмминг, конечно, был великий математик, но существует ли алгоритм Хэмминга для криптоанализа? Я нашел это выражение только в контексте "low Hamming distance attack", т.е. примерно "анализ шифра с использованием расстояния Хэмминга".

 Chuck&Huck

link 13.01.2004 21:06 
Life passes within us without us. Меня тут уже поправил заказчик, что attack это атака, по-простому. Значит, атака с использованием расстояния Хемминга. Хемминг, вроде, не хакерствовал и слов таких не знал. Правда, что ль, есть алгоритм вскрытия шифра по Хеммингу?

 Uniton

link 24.12.2005 10:09 
unit Unit1;

interface

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

type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
moText: TMemo;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
moBag: TMemo;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label5: TLabel;
GroupBox4: TGroupBox;
moTransformedText: TMemo;
Button1: TButton;
edBinaryView: TEdit;
edHemmingWithError: TEdit;
edTransformedHemming: TEdit;
edHemming: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
x, b, a, k, j, i: Integer;
s8bit, s12bit, xor4bit, s, s1, s2, BinaryViewElements1, X4BinaryViewElements, Y4BinaryViewElements: string;
begin
edBinaryView.Clear;
edHemming.Clear;
edHemmingWithError.Clear;
moBag.Clear;
edTransformedHemming.Clear;
moTransformedText.Clear;
s8bit:=''; s12bit:=''; xor4bit:=''; s:=''; s1:=''; s2:='';
BinaryViewElements1:=''; X4BinaryViewElements:=''; Y4BinaryViewElements:='';

{1}

for i:=1 to length(moText.Text) do
edBinaryView.Text:=edBinaryView.Text+copy(inttobin(ord(moText.Text[i])),25,8);

{2}

for i:=1 to (length(edBinaryView.Text) div 8) do
begin
s8bit:=copy(edBinaryView.Text,(i-1)*8+1,8);
s12bit:='00'+s8bit[1]+'0'+s8bit[2]+s8bit[3]+s8bit[4]+'0'+s8bit[5]+s8bit[6]+s8bit[7]+s8bit[8];
BinaryViewElements1:='';
for j:=1 to 12 do
if s12bit[j]='1' then BinaryViewElements1:=BinaryViewElements1+copy(IntToBin(j),29,4);

xor4bit:='';
X4BinaryViewElements:=copy(BinaryViewElements1,1,4);
for j:=1 to (length(BinaryViewElements1) div 4)-1 do
begin
Y4BinaryViewElements:=copy(BinaryViewElements1,j*4+1,4);
for k:=1 to 4 do
xor4bit:=xor4bit+inttostr(strtoint(X4BinaryViewElements[k]) xor strtoint(Y4BinaryViewElements[k]));

X4BinaryViewElements:=xor4bit;
xor4bit:='';
end;
xor4bit:=X4BinaryViewElements;
s12bit:=xor4bit[4]+xor4bit[3]+s8bit[1]+xor4bit[2]+s8bit[2]+s8bit[3]+s8bit[4]+xor4bit[1]+s8bit[5]+s8bit[6]+s8bit[7]+s8bit[8];
s:=s+s12bit;
edHemming.Text:=s;
end;

{3}

for i:=1 to (length(edHemming.Text) div 12) do
begin
s8bit:=copy(edHemming.Text,(i-1)*12+1,12);
a:=random(101);
if a<80 then
begin
b:=random(12)+1;
if s8bit[b]='1' then
s8bit[b]:='0'
else
s8bit[b]:='1';
end;
edHemmingWithError.Text:=edHemmingWithError.Text+s8bit;
end;

{4}

for i:=1 to (length(edHemmingWithError.Text) div 12) do
begin
s8bit:=copy(edHemmingWithError.Text,(i-1)*12+1,12);
s1:=s1+s8bit[3]+s8bit[5]+s8bit[6]+s8bit[7]+s8bit[9]+s8bit[10]+s8bit[11]+s8bit[12];
end;

for j:=1 to (length(s1) div 8) do
begin

s12bit:=copy(s1,(j-1)*8+1,8);
x:=0;
s8bit:='';
for i:=8 downto 1 do
s8bit:=s8bit+s12bit[i];
for i:=0 to 7 do
if s8bit[i+1]='1' then
x:=x+(1 shl i)
else x:=x+0;

moBag.Text:=moBag.Text+chr(x);
end;

{5}

s12bit:='';
for i:=1 to (length(edHemmingWithError.Text) div 12) do
begin
s12bit:=copy(edHemmingWithError.Text,(i-1)*12+1,12);
BinaryViewElements1:='';
for j:=1 to 12 do
if s12bit[j]='1' then
BinaryViewElements1:=BinaryViewElements1+copy(IntToBin(j),29,4);

xor4bit:='';
X4BinaryViewElements:=copy(BinaryViewElements1,1,4);
for j:=1 to (length(BinaryViewElements1) div 4)-1 do
begin
Y4BinaryViewElements:=copy(BinaryViewElements1,j*4+1,4);
for k:=1 to 4 do
xor4bit:=xor4bit+inttostr(strtoint(X4BinaryViewElements[k]) xor strtoint(Y4BinaryViewElements[k]));
X4BinaryViewElements:=xor4bit;
xor4bit:='';
end;
xor4bit:=X4BinaryViewElements;
s:='0000'+xor4bit;
x:=0;
BinaryViewElements1:='';
for k:=8 downto 1 do
BinaryViewElements1:=BinaryViewElements1+s[k];
for j:=0 to 7 do
if BinaryViewElements1[j+1]='1' then
x:=x+(1 shl j)
else
x:=x+0;
if xor4bit<>'0000' then
if s12bit[x]='0' then
s12bit[x]:='1'
else s12bit[x]:='0';
edTransformedHemming.Text:=edTransformedHemming.Text+s12bit;
end;

{6}

for i:=1 to (length(edTransformedHemming.Text) div 12) do
begin
s8bit:=copy(edTransformedHemming.Text,(i-1)*12+1,12);
s2:=s2+s8bit[3]+s8bit[5]+s8bit[6]+s8bit[7]+s8bit[9]+s8bit[10]+s8bit[11]+s8bit[12];
end;

for j:=1 to (length(s2) div 8) do
begin
s12bit:=copy(s2,(j-1)*8+1,8);
x:=0;
s8bit:='';
for i:=8 downto 1 do
s8bit:=s8bit+s12bit[i];
for i:=0 to 7 do
if s8bit[i+1]='1' then
x:=x+(1 shl i)
else x:=x+0;
moTransformedText.Text:=moTransformedText.Text+chr(x);
end;
end;

end.

 

You need to be logged in to post in the forum

Get short URL | Photo