Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.05.19;
Скачать: [xml.tar.bz2];

Вниз

Дешифровка по кодовому слову   Найти похожие ветки 

 
Инокентий   (2012-10-23 12:30) [0]

Доброго времени суток читающему это сообщение. перейду сразу к вопросу - нужно найти правильный метод шифрования.
У меня имеется всё, кроме самого метода, имеется оригинальный текст, ключевое слово из 16 символов (4 по 4 через -) и зашифрованный текст.
Пожалуйста, если есть чем помочь, буду очень благодарен.

По заявлению преподавателя тут всё очень просто, неделю разбирался, ничего не могу сделать подходящее, могу выслать свои пробы, но боюсь будете смеятся.


 
Ega23 ©   (2012-10-23 12:45) [1]

http://ru.wikipedia.org/wiki/%D0%A1%D0%B8%D0%BC%D0%BC%D0%B5%D1%82%D1%80%D0%B8%D1%87%D0%BD%D0%BE%D0%B5_%D1%88%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5


 
И. Павел ©   (2012-10-23 12:54) [2]

> могу выслать свои пробы

Лучше высылайте текст, шифротекст и ключ. Если «очень просто», то, скорее всего, текст просто накладывается на ключ (буквы нумеруются по порядку в алфавите). Этот вариант проверяли?


 
Ega23 ©   (2012-10-23 13:06) [3]


> текст просто накладывается на ключ (буквы нумеруются по
> порядку в алфавите).

Там куча нюансов есть. Хорошо, если только кириллица используется. А если латиница есть? Цифры присутствуют? Знаки препинания?


 
Inovet ©   (2012-10-23 13:20) [4]

> [0] Инокентий   (23.10.12 12:30)
> По заявлению преподавателя тут всё очень просто

xor?


 
Ega23 ©   (2012-10-23 13:23) [5]


> xor?

Если есть оригинальный текст и зашифрованный текст, то маловероятно.
"я" xor "я" дадут терминирующий ноль.


 
Ega23 ©   (2012-10-23 13:24) [6]

Это если сам xor каким-то образом не переопределён :)


 
И. Павел ©   (2012-10-23 13:26) [7]

> Хорошо, если только кириллица используется. А если латиница
> есть? Цифры присутствуют? Знаки препинания?

Ну если преподаватель сказал, что «всё очень просто», то не думаю, что он ожидает, что студент переберет 10-20 кодировок.


 
brother ©   (2012-10-23 13:29) [8]

вопрос автору: что вообще за игры в угадайку с преподом? зачем это?


 
Ega23 ©   (2012-10-23 13:39) [9]


> Ну если преподаватель сказал, что «всё очень просто», то
> не думаю, что он ожидает, что студент переберет 10-20 кодировок.
>

Не в кодировках дело, они тут вообще не при чём.
Допустим, есть множество кодируемых символов
1 - "1"
2 - "2"
...
9 - "9"
10 - "А"
11 - "Б"
....
42 - "Я"

Есть исходный текст "МАМА МЫЛА РАМУ"
Есть ключ "ПАПЫ ПИЛИ ПИВО"
Функция шифрования F: код конечного символа = (код символа исходного текста + код символа ключа) mod 42

Т.е. всё зависит от количества символов в кодовой таблице и порядке их расположения.

Дальше. Автор говорит, что у него ключ - 4 группы по 4 символа. Может быть шифровать по очереди. Может, первые 4 символа шифруются первой группой, вторые - второй, и т.д. Может быть всё сообщение сначала шифруется первой группой, потом всё сообщение - второй и т.д.

Вариантов - масса.


 
И. Павел ©   (2012-10-23 14:24) [10]

> [9] Ega23 ©   (23.10.12 13:39)

Ключевая фраза в моем предположении: если преподаватель сказал, что «всё очень просто».


 
Ega23 ©   (2012-10-23 14:32) [11]


> Ключевая фраза в моем предположении:

Эта ключевая фраза зависит от миллиона факторов, начиная от распухшего ЧСВ препода, и заканчивая темами, разбираемыми на семинарах.
Мне (почему-то) кажется, что данная тема - таки разбиралась.


 
И. Павел ©   (2012-10-23 14:50) [12]

> [11] Ega23 ©   (23.10.12 14:32)

Ну тогда со своей стороны могу предположить то, что преподжаватель мог дать студенту текст, шифротекст и открытый ключ, и речь идет не о симметричном методе, как предполагается в [1].


 
Ega23 ©   (2012-10-23 15:34) [13]


> Ну тогда со своей стороны могу предположить то, что преподжаватель
> мог дать студенту текст, шифротекст и открытый ключ, и речь
> идет не о симметричном методе, как предполагается в [1].


Я вот тут что подумал. Если бы я был преподавателем и предмет был программированием, то я бы сделал вот что.
То, что я писал в [9]. При этом - в функции шифрования добавить соль, например
Функция шифрования F: код конечного символа = (код символа исходного текста + код символа ключа + соль) mod 42
И задачей бы сказал найти эту самую соль.
Т.е. исходные данные:
1. Таблица кодов литералов
2. Функция шифрования с неизвестной солью
3. Ключ шифрования.
4. Исходный текст
5. Шифрованный текст.

ИМХО, это нормальная домашняя задачка для семинара.

А вот данные, как у ТС - это уже на курсовую может потянуть.


 
Инокентий   (2012-10-23 21:19) [14]

Оригинальный текст:
aaaaaaaaaaaaaaaa
ssssssssssssssss
dddddddddddddddd
ffffffffffffffff

Шифрованный:
тттттттттттттттт
аааааааааааааааа
чччччччччччччччч
хххххххххххххххx

Ключевое слово:
kkkk-kkkk-kkkk-kkkk

Код программы(только не смейтесь):


unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   pgc1: TPageControl;
   ts1: TTabSheet;
   mmo2: TMemo;
   mmo1: TMemo;
   btn1: TButton;
   edt1: TEdit;
   ts2: TTabSheet;
   mmo3: TMemo;
   mmo4: TMemo;
   edt2: TEdit;
   btn2: TButton;
   lbl1: TLabel;
   lbl2: TLabel;
   tmr1: TTimer;
   lbl3: TLabel;
   tmr2: TTimer;
   lbl4: TLabel;
   procedure btn1Click(Sender: TObject);
   procedure btn2Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure TrimWorkingSet;
   procedure tmr1Timer(Sender: TObject);
   procedure edt1KeyDown(Sender: TObject; var Key: Word;
     Shift: TShiftState);
   procedure tmr2Timer(Sender: TObject);
   procedure edt2KeyDown(Sender: TObject; var Key: Word;
     Shift: TShiftState);
        private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 x:Integer=0;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
begin
mmo2.Text:="";
x:=0;
tmr1.Enabled:=True;
end;

procedure TForm1.btn2Click(Sender: TObject);
var
s,pass :string;
i,j,h,b:Integer;
begin
mmo4.Text:="";
x:=36;
tmr2.Enabled:=True;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
form1.DoubleBuffered:=true;
TrimWorkingSet;

end;

procedure TForm1.TrimWorkingSet;
var MainHandle: THandle;
begin
if Win32Platform = VER_PLATFORM_WIN32_NT then
begin
MainHandle := OpenProcess(PROCESS_ALL_ACCESS, false, GetCurrentProcessID);
SetProcessWorkingSetSize(MainHandle, DWORD(-1), DWORD(-1));
CloseHandle(MainHandle);
end;
end;

procedure TForm1.tmr1Timer(Sender: TObject);
var
s,pass :string;
i,j,h,b:Integer;
begin
X:=x+1;
s:=mmo1.Text;
i:=Length(s);
pass:=edt1.Text ;
j:=Length(pass);
h:=Round(i/j);
for b:=1 to h do
pass:=pass+pass;
pass:=Copy(pass,1,i);
for b:=1 to i do
begin
if ((Ord(s[b])+ord(pass[b])))>255 then
mmo2.text:=mmo2.text+" "+chr((Ord(s[b])+ord(pass[b]))-255+x)
else
mmo2.Text:=mmo2.text+" "+chr((Ord(s[b])+ord(pass[b]))+x);
lbl3.Caption:="X= "+inttostr(x);
end;
end;

procedure TForm1.edt1KeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
if (key=32)and (tmr1.Enabled=True) then
tmr1.Enabled:=False
else
tmr1.Enabled:=True;
end;

procedure TForm1.tmr2Timer(Sender: TObject);
var
s,pass :string;
i,j,h,b:Integer;
begin
X:=x;
s:=mmo3.Text;
i:=Length(s);
pass:=edt2.Text ;
j:=Length(pass);
h:=Round(i/j);
for b:=1 to h do
pass:=pass;
pass:=Copy(pass,1,i);
for b:=1 to i do
begin
if (Ord(s[b])-ord(pass[b]))<1 then
mmo4.text:=mmo4.text+chr((Ord(s[b])-ord(pass[b]))+255-x)
else
mmo4.Text:=mmo4.text+chr((Ord(s[b])-ord(pass[b])-x));
lbl1.Caption:=IntToStr((Ord(s[b])));
lbl4.Caption:="X= "+inttostr(x);
end;
end;

procedure TForm1.edt2KeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
if (key=32)and (tmr2.Enabled=True) then
tmr2.Enabled:=False
else
tmr2.Enabled:=True;
end;

end.

Что скажите?


 
Инокентий   (2012-10-23 21:27) [15]

Я могу вам выдать любой зашифрованный текст по любому вашему ключевому слову, которое состоит из 16 символом если это поможет в поиске метода.
Я уже к преподавателю обращался несколько раз у меня есть несколько готовых(шифр+ключ=зашифровка), могу написать их или какие вы попросите, он сам сказал обращаться к нему за этим, чтобы нам проще было. и ещё преподаватель как то так сказал - почему все просят только текст, причём почти одинаковый, никто не спрашивал ни символы ни числа ни тот же хекс...  Интересно зачем это он сказал, жаль дословности точной не помню, может запутать хочет или к чему бы ему это.   Прикольный он )))


 
Инокентий   (2012-10-23 21:31) [16]

код программы, который я указал ранее, я делал в самом начале когда у меня было только 2 варианта шифрованного текста, пытался найти методом подбора и сложения, если в одном примере вроде находишь подходящие X, то когда применяешь под другой текст и тоже ключевое слово, то подходящее Х не подходит!


 
Rouse_ ©   (2012-10-23 21:57) [17]

Чет сложный у тебя алго.

Оть смотри.

Оригинальный текст:
aaaaaaaaaaaaaaaa
ssssssssssssssss
dddddddddddddddd
ffffffffffffffff

Шифрованный:
тттттттттттттттт
аааааааааааааааа
чччччччччччччччч
хххххххххххххххx

Ключевое слово:
kkkk-kkkk-kkkk-kkkk

Делаем анализ:

procedure TForm1.Button1Click(Sender: TObject);

 function Foo(A, B: Char): Byte;
 begin
   Result := Byte(A) xor Byte(B);
 end;

var
 D1, D2, D3, D4: Byte;
begin
 D1 := Foo("a", "т");
 D2 := Foo("s", "а");
 D3 := Foo("d", "ч");
 D4 := Foo("f", "х");
 ShowMessage(Format("%d, %d, %d, %d, char = %s", [D1, D2, D3, D4, Char(D1)]));
end;


Видим что результат каждого ксора 147. Значит как минимум алго ксора вычислен верно, теперь осталось поймать ключ.
Т.к. Char(D1) не совпадает с ключем k, то считаем что над ним производились преобразования например такого вида:
Byte(KeyChar) xor 248
Соответственно код трансформа блока будет примерно таким:

procedure TForm1.Button2Click(Sender: TObject);

 function Transform(const Data, Key: AnsiString): AnsiString;
 var
   I, KeyCursor, KeyLength, RealKey: Integer;
 begin
   SetLength(Result, Length(Data));
   KeyCursor := MaxInt;
   KeyLength := Length(Key);
   for I := 1 to Length(Data) do
   begin
     if (KeyCursor mod 5) = 0 then
       Inc(KeyCursor);
     if KeyCursor > KeyLength then
       KeyCursor := 1;
     RealKey := Byte(Key[KeyCursor]) xor 248;
     Inc(KeyCursor);
     Result[I] := AnsiChar(Byte(Data[I]) xor RealKey);
   end;
 end;

const
 Key = "kkkk-kkkk-kkkk-kkkk";
var
 RealData, Encrypted, Decrypted: AnsiString;
begin
 RealData :=
   "aaaaaaaaaaaaaaaa" +
   "ssssssssssssssss" +
   "dddddddddddddddd" +
   "ffffffffffffffff";
 Encrypted := Transform(RealData, Key);
 Decrypted := Transform(Encrypted, Key);
 ShowMessage(Encrypted);
 ShowMessage(Decrypted);
end;


 
Rouse_ ©   (2012-10-23 22:02) [18]

ЗЫ: а вообще вас как-то по глупому криптоанализу учат...
Методы Полларда, линейного/дифференциального анализа проходили?


 
Инокентий   (2012-10-24 17:06) [19]

это задание дано нам на пол года, пока учимся, мышление улучшается(Ну так должно быть) и в конце концов мы должны решить эту задачу, конец года через 2 месяца а мыслей по этому вопросу нет))) Методы Полларда, линейного/дифференциального анализа мы не проходили.


 
Rouse_ ©   (2012-10-24 18:53) [20]


> а мыслей по этому вопросу нет)

Ну тогда бери мое решение и изучай...


 
Ega23 ©   (2012-10-24 20:13) [21]


> это задание дано нам на пол года

За полгода можно и перебором сделать.


 
Инокентий   (2012-10-24 20:24) [22]

Rouse_ Спасибо, буду изучать)))

Ega23 методом подбора я пытался код текста выше, пока только так пытался,код программы, который я указал ранее, я делал в самом начале когда у меня было только 2 варианта шифрованного текста, пытался найти методом подбора и сложения, если в одном примере вроде находишь подходящие X, то когда применяешь под другой текст и тоже ключевое слово, то подходящее Х не подходит!


 
AV ©   (2012-10-25 13:02) [23]


> Я уже к преподавателю обращался несколько раз у меня есть
> несколько готовых(шифр+ключ=зашифровка), могу написать их

напиши
Как можно больше примеров

а также, если можно, зашифрованный текст для следующего
оригинала
ABCDEFGHIJKLMNOP
PONMLKJIHGFEDCBA
AAAAAAAAAAAAAAAA
ZZZZZZZZZZZZZZZZ
при ключах
ABCD-EFGH-IJKL-MNOP
PONM-LKJI-HGFE-DCBA
AAAA-AAAA-AAAA-AAAA
ZZZZ-ZZZZ-ZZZZ-ZZZZ
т.е. должно быть 4 зашифрованных текста

или хотя бы 2, ключами
ABCD-EFGH-IJKL-MNOP
AAAA-AAAA-AAAA-AAAA


 
Инокентий   (2012-10-25 13:56) [24]

Больше нет никаких вариантов-предложений??


 
Инокентий   (2012-10-25 14:02) [25]

> AV ©   (25.10.12 13:02) [23]

> напиши
> Как можно больше примеров

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

> AV< спасибо


 
Инокентий   (2012-10-25 14:11) [26]

Кстати если поможет могу отправить отрывок из Война и Мир зашифрованных ключём ABCD-EFGH-IKLM-NOPQ


 
AV ©   (2012-10-25 14:37) [27]


> Инокентий

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

Фактически, есть только один пример. Как можно предполагать - непонятно.
Вдруг алгоритм там
Если (ТЕХT1), то ответить (TEXT2), иначе вообще не шифровать? :)


 
AV ©   (2012-10-25 14:40) [28]


> из Война и Мир

ну, не очень большой, конечно, если :)


 
Инокентий   (2012-10-25 16:07) [29]


> > из Война и Мир
>
> ну, не очень большой, конечно, если :)

Отрывок большой в архиве отправлю вот ссылка - http://rusfolder.com/33293920


 
AV ©   (2012-10-25 16:15) [30]


> Отрывок большой в архиве отправлю вот ссылка - http://rusfolder.
> com/33293920

Ключ какой?


 
Инокентий   (2012-10-25 16:22) [31]


> AV ©   (25.10.12 13:02) [23]
>
> > Я уже к преподавателю обращался несколько раз у меня есть
>
> > несколько готовых(шифр+ключ=зашифровка), могу написать
> их
>
> напиши
> Как можно больше примеров
>
>
> оригинала
> ABCDEFGHIJKLMNOP
> PONMLKJIHGFEDCBA
> AAAAAAAAAAAAAAAA
> ZZZZZZZZZZZZZZZZ
> при ключах
> ABCD-EFGH-IJKL-MNOP
> PONM-LKJI-HGFE-DCBA


Оригинальный текст:
ABCDEFGHIJKLMNOP
PONMLKJIHGFEDCBA
AAAAAAAAAAAAAAAA
ZZZZZZZZZZZZZZZZ

Шифрованный текст в блокноте:
!"#$%&"()*+,-./00/.-,+*)("&%$#"!!!!!!!!!!!!!!!!!::::::::::::::::

зашифрованный текст вид в Хексе:

21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f 30
30 2f 2e 2d 2c 2b 2a 29 28 27 26 25 24 23 22 21
21 21 21 21 21 21 21 21 21 21 21 21 21 21 21 21
3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a 3a


 
Инокентий   (2012-10-25 16:23) [32]

Забыл ключевое слово : ABCD-EFGH-IJKL-MNOP


 
Инокентий   (2012-10-25 16:24) [33]

Ключевое слово:
ABCD-EFGH-IKLM-NOPQ
этот ключ использовался на отрывке из Война и Мир


 
Rouse_ ©   (2012-10-25 19:06) [34]

Для ключа ABCD-EFGH-IJKL-MNOP ксоровое число 105,

Т.е. грубо чтобы распаковать войну и мир нужно выполнить след трансформ:

function Transform(const Data: AnsiString): AnsiString;
var
  I, RealKey: Integer;
begin
  SetLength(Result, Length(Data));
  for I := 1 to Length(Data) do
  begin
    RealKey := 105;
    Result[I] := AnsiChar(Byte(Data[I]) xor RealKey);
  end;
end;


осталось только понять как это число вычисляется из ключа.


 
Rouse_ ©   (2012-10-25 19:32) [35]

Кстати, а ты при помощи чего шифрование делаешь? :)


 
Инокентий   (2012-10-25 20:45) [36]


> Rouse_ ©   (25.10.12 19:32) [35]
> Кстати, а ты при помощи чего шифрование делаешь? :)


Я сам то не делаю нам преподаватель дал несколько вариантов и сказал что мы можем к нему обращаться с любым текстом и любым(16 символов) ключевым словом и он на даёт зашифрованный текст, у нас у однокурсников много разных вариантов и у меня уже достаточно много их!


 
AV ©   (2012-10-25 20:46) [37]


> ксоровое число 105

это да, это просто
>> осталось только понять как это число вычисляется из ключа.


> ты при помощи чего шифрование делаешь?

хочешь в самом шифраторе посмотреть как? :)


 
Sha ©   (2012-10-25 21:16) [38]

> Rouse_ ©   (25.10.12 19:06) [34]
> осталось только понять как это число вычисляется из ключа


например, так :)
105=15*7=15*8-15=15*16/2-15=(0+1+2+..+15)-15=(Key[0]+Key[1]+..+Key[15])-High(Key),


 
AV ©   (2012-10-25 21:22) [39]


> Оригинальный текст:
> ABCDEFGHIJKLMNOP
> PONMLKJIHGFEDCBA
> AAAAAAAAAAAAAAAA
> ZZZZZZZZZZZZZZZZ
>
> Шифрованный текст в блокноте:
> !"#$%&"()*+,-./00/.-,+*)("&%$#"!!!!!!!!!!!!!!!!!::::::::
> ::::::::
>

96

но ключ тот же
ABCD-EFGH-IJKL-MNOP

значит, зависит и от данных


 
AV ©   (2012-10-25 21:43) [40]


> сказал что мы можем к нему обращаться с любым текстом и
> любым(16 символов) ключевым словом и он на даёт зашифрованный
> текст

Обратись

с текстом
A
Ключ
AAAA-AAAA-AAAA-AAAA

с текстом
B
Ключ
AAAA-AAAA-AAAA-AAAA

с текстом
AB
Ключ
AAAA-AAAA-AAAA-AAAA


 
Sha ©   (2012-10-25 22:28) [41]

лучше с текстом #0
и ключами:
#1#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0
#0#1#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0
#0#0#1#0-#0#0#0#0-#0#0#0#0-#0#0#0#0
#0#0#0#1-#0#0#0#0-#0#0#0#0-#0#0#0#0
#0#0#0#0-#1#0#0#0-#0#0#0#0-#0#0#0#0
#0#0#0#0-#0#1#0#0-#0#0#0#0-#0#0#0#0
#0#0#0#0-#0#0#1#0-#0#0#0#0-#0#0#0#0
#0#0#0#0-#0#0#0#1-#0#0#0#0-#0#0#0#0
#0#0#0#0-#0#0#0#0-#1#0#0#0-#0#0#0#0
#0#0#0#0-#0#0#0#0-#0#1#0#0-#0#0#0#0
#0#0#0#0-#0#0#0#0-#0#0#1#0-#0#0#0#0
#0#0#0#0-#0#0#0#0-#0#0#0#1-#0#0#0#0
#0#0#0#0-#0#0#0#0-#0#0#0#0-#1#0#0#0
#0#0#0#0-#0#0#0#0-#0#0#0#0-#0#1#0#0
#0#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#1#0
#0#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#1
если этого будет мало добавим еще


 
Sha ©   (2012-10-25 22:32) [42]

вот ключи эти тоже спроси
#2#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0
#4#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0
#8#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0
#16#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0
#32#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0
#64#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0
#128#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0


 
Rouse_ ©   (2012-10-25 22:44) [43]


> 96
>
> но ключ тот же
> ABCD-EFGH-IJKL-MNOP

не ключи разные.
ABCD-EFGH-IJKL-MNOP
и второй для войны и мира
ABCD-EFGH-IKLM-NOPQ


 
Rouse_ ©   (2012-10-25 22:45) [44]

Меня больше смущает 147 для kkkk-kkkk-kkkk-kkkk, тут явно не банальный ксор


 
AV ©   (2012-10-26 01:08) [45]

Автору.

В общем,
надо два разных текста по одному ключу прогнать
Тексты как можно проще. В идеале, как сказал Sha.
Если препод придерется, что это не текст, то как я предложил.
хотя даже лучше нет. Лучше "пробел" или @
Ключ тоже, или все "пробелы" или @

Итого
все пробелы (чем меньше разрешит, тем лучше)
второй - все @(чем меньше разрешит, тем лучше)
Ключ из них же, но один и тот же для обоих текстов.

- первый текст
@@@@-@@@@-@@@@-@@@@ - ключ

@ - второй текст
@@@@-@@@@-@@@@-@@@@ - ключ


 
Германн ©   (2012-10-26 02:26) [46]

< Я сам то не делаю нам преподаватель дал несколько вариантов
> и сказал что мы можем к нему обращаться с любым текстом
> и любым(16 символов) ключевым словом и он на даёт зашифрованный
> текст

)))


 
han_malign   (2012-10-26 08:50) [47]


> Меня больше смущает 147 для kkkk-kkkk-kkkk-kkkk, тут явно не банальный ксор

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

И нужно понимать - значащие символы ключа - любые(Sha © [42]), или только печатаемые?
То есть у нас 2^127 перестановок, или значительно меньше???


 
Rouse_ ©   (2012-10-26 10:27) [48]


> - там банальная таблица - нужно понять алгоритм  перестановки
> на основании ключа...

Банальную таблицу ухохочешся составлять.
Если исходить из данного постулата: "По заявлению преподавателя тут всё очень просто", то должно быть что-то другое.
Ну типа Key[n] - Key[N+1] + Key[N+2] и т.п.


 
brother ©   (2012-10-26 10:29) [49]

Вот препод от вас отмазался ;) а окажется Key[n] + xor + ключевая таблица ;)


 
Rouse_ ©   (2012-10-26 10:51) [50]

Кстати это и не CRC8 (инициализация таблицы в диапазоне полинома 1..255 не подходит)


 
AV ©   (2012-10-26 11:11) [51]


> Ну типа Key[n] - Key[N+1] + Key[N+2] и т.п.

согласен

для примера
Оригинальный текст:ABCDEFGHIJKLMNOP
Шифрованный текст:!"#$%&"()*+,-./0
ключевое слово : ABCD-EFGH-IJKL-MNOP
Подходит OR по ключу + 1 = 96

Что уже не подходит для других.

Нужно что-то типа ключа, где все 0 и только 1 бит установлен.
#32 - пробел
#64 - @
подошли бы


 
han_malign   (2012-10-26 12:20) [52]


> "По заявлению преподавателя тут всё очень просто", то должно быть что-то другое.

- просто - на полгода...

и либо здесь ошибка
> Инокентий [14]
>
> Оригинальный текст:
> aaaaaaaaaaaaaaaa
> ssssssssssssssss
> dddddddddddddddd
> ffffffffffffffff
>
> Шифрованный:
> тттттттттттттттт
> аааааааааааааааа
> чччччччччччччччч
> хххххххххххххххx
>
> Ключевое слово:
> kkkk-kkkk-kkkk-kkkk

$61 - $F2
$64 - $F7
$66 - $F5
$73 - $E0
- либо таки таблица


 
Rouse_ ©   (2012-10-26 13:28) [53]


> и либо здесь ошибка

Почему же ошибка? Если отнимать - да цифры разные, а если ксорить - то во всех 4 есть ключ = 147

 Writeln($61 xor $F2);
 Writeln($64 xor $F7);
 Writeln($66 xor $F5);
 Writeln($73 xor $E0);


 
han_malign   (2012-10-26 14:22) [54]

- да чего-то я попутал...

То есть, для решения задачи - исходный и шифро-текст не важен (уже) - достаточно одного символа.

И на самом деле нужно исследовать ключ, а не шифровку...

Тогда в первую очередь нужно проверить коммутативность групп ключа:
- 4 (по идее ортогональные) перестановки в подгруппе: 1234-..., 2134, 1243, 3412
- возможно 4 раза(X-0-0-0, 0-X-0-0, 0-0-X-0, 0-0-0-X) т.к. подгруппы могут по разному кодироваться.
- тоже самое для групп 1111-2222-3333-4444, ...
(и того 20 ключей)
а дальше уже смотреть куда копать...


 
Rouse_ ©   (2012-10-26 14:28) [55]

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


 
Инокентий   (2012-10-26 16:02) [56]


> A
> Ключ
> AAAA-AAAA-AAAA-AAAA
>


шифрованный:.
шифрованный вид в хексе:04


> с текстом
> B
> Ключ
> AAAA-AAAA-AAAA-AAAA
>


шифрованный:.
шифрованный вид в хексе:07

> с текстом
> AB
> Ключ
> AAAA-AAAA-AAAA-AAAA


шифрованный:..
шифрованный вид в хексе:04 07


 
Инокентий   (2012-10-26 16:03) [57]

>AV
Тест выше для AV то что Вы просили


 
Инокентий   (2012-10-26 16:24) [58]


> AV ©   (26.10.12 01:08) [45]
> Автору.
>
> В общем,
> надо два разных текста по одному ключу прогнать
> Тексты как можно проще. В идеале, как сказал Sha.
> Если препод придерется, что это не текст, то как я предложил.
>
> хотя даже лучше нет. Лучше "пробел" или @
> Ключ тоже, или все "пробелы" или @
>
> Итого
> все пробелы (чем меньше разрешит, тем лучше)
> второй - все @(чем меньше разрешит, тем лучше)
> Ключ из них же, но один и тот же для обоих текстов.
>
> один пробел - первый текст
> @@@@-@@@@-@@@@-@@@@ - ключ
>


шифрованный:`
шифрованный вид в хексе:60


> @ - второй текст
> @@@@-@@@@-@@@@-@@@@ - ключ


шифрованный:.
шифрованный вид в хексе:00


 
Инокентий   (2012-10-26 16:43) [59]


> Sha ©   (25.10.12 22:28) [41]
> лучше с текстом #0
> и ключами:
> #1#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0
> #0#1#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0
> #0#0#1#0-#0#0#0#0-#0#0#0#0-#0#0#0#0
> #0#0#0#1-#0#0#0#0-#0#0#0#0-#0#0#0#0
> #0#0#0#0-#1#0#0#0-#0#0#0#0-#0#0#0#0
> #0#0#0#0-#0#1#0#0-#0#0#0#0-#0#0#0#0
> #0#0#0#0-#0#0#1#0-#0#0#0#0-#0#0#0#0
> #0#0#0#0-#0#0#0#1-#0#0#0#0-#0#0#0#0
> #0#0#0#0-#0#0#0#0-#1#0#0#0-#0#0#0#0
> #0#0#0#0-#0#0#0#0-#0#1#0#0-#0#0#0#0
> #0#0#0#0-#0#0#0#0-#0#0#1#0-#0#0#0#0
> #0#0#0#0-#0#0#0#0-#0#0#0#1-#0#0#0#0
> #0#0#0#0-#0#0#0#0-#0#0#0#0-#1#0#0#0
> #0#0#0#0-#0#0#0#0-#0#0#0#0-#0#1#0#0
> #0#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#1#0
> #0#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#1
> если этого будет мало добавим еще
>
> <Цитата>
> Sha ©   (25.10.12 22:32) [42]
> вот ключи эти тоже спроси
> #2#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0
> #4#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0
> #8#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0
> #16#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0
> #32#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0
> #64#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0
> #128#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0


А вот с этим по труднее будет,если я правильно Вас понял то надо без# писать т.к. ключ состоит из 16 символов


 
AV ©   (2012-10-26 16:52) [60]


> Инокентий

ага

итак, xor на этот раз 69  
// что как бэ говорит, что мы еще по ээ мучаемся, причем не по-человечьи   :)
или 0100 0101

имеется ключ - 65 (0100 0001)  по 16 (0001 0000) раз

пока ничего
(просто так, записал, что бы видно было. Может что потом придет)


 
AV ©   (2012-10-26 16:53) [61]


> шифрованный:`
> шифрованный вид в хексе:60
>
>
> > @ - второй текст
> > @@@@-@@@@-@@@@-@@@@ - ключ
>
>
> шифрованный:.
> шифрованный вид в хексе:00

а вот это интереснее..
подумаю дома


 
Инокентий   (2012-10-26 17:14) [62]


> > Sha ©   (25.10.12 22:28) [41]
> > лучше с текстом #0
> > и ключами:
> > #1#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0


в блокноте ец
в хексе e5 f6

#1#0#0#0-#0#0#0#0-#0#0#0#0-#0#0#0#0 я дал ему этот ключ он его прямо так и применил с решётками


 
Инокентий   (2012-10-26 17:17) [63]

у меня тут ещё есть интересные примеры если помогут

В качестве оригинального текста используется 1 пробел

Ключ: kkkk-kkkk-kkkk-kkkl
шифрованный: °
шифрованный вид в хексе: b0

Ключ: kkkk-kkkk-kkkk-kkkm
шифрованный: ±
шифрованный вид в хексе: b1

Ключ: kkkk-kkkk-kkkk-kkkn
шифрованный: ®
шифрованный вид в хексе: ae

Ключ: kkkk-llll-mmmm-nnnn
шифрованный: «
шифрованный вид в хексе: ab

Ключ: kkkk-kkkk-kkkq-kkkk
шифрованный: Q
шифрованный вид в хексе: 51


 
Sha ©   (2012-10-26 18:12) [64]

> я дал ему этот ключ он его прямо так и применил с решётками

кто из вас прикололся?


 
Инокентий   (2012-10-26 18:41) [65]


> Sha ©   (26.10.12 18:12) [64]
> > я дал ему этот ключ он его прямо так и применил с решётками
>
> кто из вас прикололся?

В смысле?


 
Sha ©   (2012-10-26 18:53) [66]

#0 означает символ номер 0, т.е. его Ord()=0, т.е его шестнадцатеричное значение равно $00.

Кто из вас с преподом сделал вид, что этого не знает?

Или никто? :-)


 
Инокентий   (2012-10-26 19:00) [67]

Я думал что это именно код)))) Да это однозначно моя ошибка, извините)))


 
Sha ©   (2012-10-26 22:56) [68]

функцию для последней цифры ключа подобрал


function GetXorValue(start: integer; const s: string): byte;
var
 i, val: integer;
begin;
 Result:=start;
 for i:=1 to Length(s) do begin;
   val:=Ord(s[i]) + (Ord(s[i]) xor 1) and 1 * 2;
   Result:=Result-val;
   end;
 end;

const
 TestKeys: array[0..3] of string= (
   "kkkk-kkkk-kkkk-kkkk",
   "kkkk-kkkk-kkkk-kkkl",
   "kkkk-kkkk-kkkk-kkkm",
   "kkkk-kkkk-kkkk-kkkn"
   );

procedure TForm1.Button1Click(Sender: TObject);
var
 i, start: integer;
 b: byte;
begin;
 start:=256;
 while start>0 do begin;
   dec(start);
   if GetXorValue(start, TestKeys[Low(TestKeys)])=147 then break;
   end;
 Memo1.Lines.Add(Format("start=%.2x",[start]));
 for i:=Low(TestKeys) to High(TestKeys) do begin;
   b:=GetXorValue(start, TestKeys[i]);
   Memo1.Lines.Add(Format("xor=%.2x   code=%.2x",[b, b xor $20]));
   end;
 end;

{вывод:
start=CA
xor=93   code=B3
xor=90   code=B0
xor=91   code=B1
xor=8E   code=AE
}



Страницы: 1 2 вся ветка

Форум: "Начинающим";
Текущий архив: 2013.05.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.66 MB
Время: 0.005 c
10-1184587288
Gerda
2007-07-16 16:01
2013.05.19
IDispatch и Потоки


15-1354720674
xayam
2012-12-05 19:17
2013.05.19
Любителям шахмат (и не только) посвящается


15-1357927063
Dimka Maslov
2013-01-11 21:57
2013.05.19
То ли лыжи не едут...


15-1358139314
Дмитрий С
2013-01-14 08:55
2013.05.19
Пространства между строками.


15-1358154750
userabc
2013-01-14 13:12
2013.05.19
именование таблиц бд





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский