BSCAS
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.157] |
|
|
правила раздела Алгоритмы

| Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
BSCAS
|
Сообщ.
#16
,
|
|
|
|
Цитата IX0DeS, 28.03.03, 14:37:12 и это опять я... задаем себе вопрос? ээ.. назовите одно из основных свойств _хорошего_ алгоритма отвечаем... кто не согласится тут со мной ? любой ключ должен обеспечить одинаковую степень защиты Охх ну ты туг немного.Скажи мне на милость а ты слышал когда-нибудь об алгоритме генерации ключей??Ты мне не подскажеш зачем он нужен?! Цитата на вход подаем ключ состоящий из 64байт 0xFFh текст для шифрования _fuckoff на выходе получаем... x7Fh,fuckof,x19h те. из восьми букв изменились только две... гыгы ну что крутой ... На какой вход ты подаеш ключ?? ;D. А теперь посматри сюда: ![]() ![]() <br> Key2 db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh <br> db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh <br> db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh <br> db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh <br> db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh<br> db 0FFh,0FFh,0BBh,0FFh,0FFh,0FFh,0FFh,0FFh<br> db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh<br> db 0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh,0FFh <br><br> Текст : "_fuckoff" в Hex 0x5F 0x66 0x75 0x63 0x6B 0x6F 0x66 0x66 <br> На выходе : 0x79 0x62 0x35 0x67 0x6F 0x2F 0x26 0x7F<br> Улавливаеш разницу ??У тубя что с воображение туго ты что не мог по лучше ключ выбрать??Ты себе хоть представляеш что будет происходить с битовой плоскостью если у нас будет такой ключ,который ты предложил. Цитата переписал еге - с Loop'ами сделал так мне кажется он выглядит меньше (такого стиля программироваия я еще давно не видел... детский сад чесс слово)Не надо меня учить прагроммировать я этому без чьей-либо помощи учился и буду дальше учится. Надо же он сделал с loop-ми.И что ?Ах да занимает меньше места.Блин да ты крут как я посматрю.А ты о производительности думал? |
|
Сообщ.
#17
,
|
|
|
|
Цитата Zveruga, 28.03.03, 14:41:56 Ну вообщем это твое право, а по asm`у востанавливать алгоритм у меня нет желания... По твоим предыдущим объяснениям у меня уже возникали разночтения, так то вот..SVK я да этого все пытался упорно всем все обьяснить, но почему-то почти никто меня не хотел слушать. |
|
Сообщ.
#18
,
|
|
|
|
Цитата ;edi - указатель на ключ ;esi - указатель на входной блок данных по моему это ты писал... я делаю ![]() ![]() <br> mov edi,offset key <br> mov esi,offset block <br> call BSCAS_Shifr <br> что не так ?? зы мне абсолютно паралельно что у нас или у вас с какойто плоскостью будет... ну не работает же твой алгоритм и все тут |
|
Сообщ.
#19
,
|
|
|
|
Цитата IX0DeS, 28.03.03, 15:00:34 да еще забыл твой алгоритм чтото криво кработает... Страно у меня все работает , а вот у некоторых личностей который его наверно уже перековыряли нет.Ты хоть смотри что ты там ковыряеш а то ведь сам потом не разгребеш. |
|
Сообщ.
#20
,
|
|
|
|
Цитата Zveruga, 28.03.03, 15:11:29 Страно у меня все работает , а вот у некоторых личностей который его наверно уже перековыряли нет.Ты хоть смотри что ты там ковыряеш а то ведь сам потом не разгребеш. так привожу прогу полностью compil.bat ![]() ![]() <br> tasm32.exe /ml /m /z /z lamo.asm,lamo.obj<br> tlink32.exe -aa -x -c -o -Tpe lamo.obj,,,import32.lib<br> сама прога.... ![]() ![]() <br>;_______________________________________________________________________<br> callW macro x<br> extern x:PROC<br> call x<br> endm <br> p386 <br> model flat<br> locals __<br> .data <br>;_______________________________________________________________________<br>Bit_0 db 0 <br>Bit_1 db 0 <br>Bit_2 db 0 <br>Bit_3 db 0 <br>Bit_4 db 0 <br>Bit_5 db 0 <br>Bit_6 db 0 <br>Bit_7 db 0 <br><br>New_Bit_0 db 0 <br>New_Bit_1 db 0 <br>New_Bit_2 db 0 <br>New_Bit_3 db 0 <br>New_Bit_4 db 0 <br>New_Bit_5 db 0 <br>New_Bit_6 db 0 <br>New_Bit_7 db 0 <br><br><br>key db 64 dup (0ffh)<br>block db 3 dup ('12345678')<br>;_______________________________________________________________________<br> .code <br>start: <br><br> ;ecx - число входящих блоков к шифрации дешифрации <br> ;edi - указатель на ключ <br> ;edx - индекс строк <br> ;ebx - индекс столбцов <br> ;esi - указатель на входной блок данных <br> ;eax - используется от болды <br><br> mov ecx, 3<br> mov edi, offset key<br> mov esi, offset block <br> pusha <br> call BSCAS_Shifr<br> popa <br> call BSCAS_Deshifr<br><br> push 0ffh<br> callW ExitProcess<br><br>;_______________________________________________________________________<br>Right_Offset proc <br> ror byte ptr [esi + edx], 01h ;ротация вправо <br> call Set_Old_Bits ;Установка все битов <br> call Vertical_Roter_Up ;Вертикальная ротация вверх <br> call Set_New_Bits ;устанавливаем новые биты <br> ret <br>Right_Offset endp <br>;_______________________________________________________________________<br><br>Left_Offset proc <br> rol byte ptr [esi + edx], 01h ;ротация влево <br> call Set_Old_Bits ;установка всех битов <br> call Vertical_Roter_Down ;вертикальное смещение вниз <br> call Set_New_Bits ;Устанавливываем новые биты <br> ret <br>Left_Offset endp <br><br>;_______________________________________________________________________<br>;loop optimization :)<br>;Set_Old_Bits proc <br>; push eax <br>; push ebp<br>; xor eax, eax <br>; xor ebp, ebp<br>;<br>;_a:<br>; mov al, byte ptr [esi][ebp] <br>; mov [byte ptr Bit_0][ebp],0 <br>; bt ax, bx <br>; adc [byte ptr Bit_0][ebp],0 <br>; inc ebp<br>; cmp ebp,7<br>; jle _a<br>;<br>; pop ebp <br>; pop eax <br>; ret <br>;Set_Old_Bits endp <br>;_______________________________________________________________________<br><br>Set_Old_Bits proc <br> push eax <br> xor eax, eax <br><br> mov al, byte ptr [esi] <br> mov Bit_0, 0 <br> bt ax, bx <br> adc Bit_0, 0 <br><br> mov al, byte ptr [esi + 01h] <br> mov Bit_1, 0 <br> bt ax, bx <br> adc Bit_1, 0 <br><br> mov al, byte ptr [esi + 02h] <br> mov Bit_2, 0 <br> bt ax, bx <br> adc Bit_2, 0 <br><br> mov al, byte ptr [esi + 03h] <br> mov Bit_3, 0 <br> bt ax, bx <br> adc Bit_3, 0 <br><br> mov al, byte ptr [esi + 04h] <br> mov Bit_4, 0 <br> bt ax, bx <br> adc Bit_4, 0 <br><br> mov al, byte ptr [esi + 05h] <br> mov Bit_5, 0 <br> bt ax, bx <br> adc Bit_5, 0 <br><br> mov al, byte ptr [esi + 06h] <br> mov Bit_6, 0 <br> bt ax, bx <br> adc Bit_6, 0 <br><br> mov al, byte ptr [esi + 07h] <br> mov Bit_7, 0 <br> bt ax, bx <br> adc Bit_7, 0 <br><br> pop eax <br> ret <br>Set_Old_Bits endp <br>;_______________________________________________________________________<br><br>Set_New_Bits proc <br> push eax <br> xor eax, eax <br><br> mov al, byte ptr [esi] ;Загрузка первого байта из блока <br> cmp New_Bit_0 , 1 ;Проверка бита <br> je Set_Bit_0 ;Да установить <br> btr ax, bx ;Сбросить <br> jmp Byte_1 ;Выход <br>Set_Bit_0: <br> bts ax, bx ;Установка <br><br>Byte_1: <br> mov byte ptr [esi], al <br> mov al, byte ptr [esi + 01h] <br> cmp New_Bit_1 , 1 <br> je Set_Bit_1 <br> btr ax, bx <br> jmp Byte_2 <br>Set_Bit_1: <br> bts ax, bx <br><br>Byte_2: <br> mov byte ptr [esi + 01h], al <br> mov al, byte ptr [esi + 02h] <br> cmp New_Bit_2 , 1 <br> je Set_Bit_2 <br> btr ax, bx <br> jmp Byte_3 <br>Set_Bit_2: <br> bts ax, bx <br><br>Byte_3: <br> mov byte ptr [esi+ 02h], al <br> mov al, byte ptr [esi + 03h] <br> cmp New_Bit_3 , 1 <br> je Set_Bit_3 <br> btr ax, bx <br> jmp Byte_4 <br>Set_Bit_3: <br> bts ax, bx <br><br>Byte_4: <br> mov byte ptr [esi + 03h], al <br> mov al, byte ptr [esi + 04h] <br> cmp New_Bit_4 , 1 <br> je Set_Bit_4 <br> btr ax, bx <br> jmp Byte_5 <br>Set_Bit_4: <br> bts ax, bx <br><br>Byte_5: <br> mov byte ptr [esi + 04h], al <br> mov al, byte ptr [esi + 05h] <br> cmp New_Bit_5 , 1 <br> je Set_Bit_5 <br> btr ax, bx <br> jmp Byte_6 <br>Set_Bit_5: <br> bts ax, bx <br><br>Byte_6: <br> mov byte ptr [esi + 05h], al <br> mov al, byte ptr [esi + 06h] <br> cmp New_Bit_6 , 1 <br> je Set_Bit_6 <br> btr ax, bx <br> jmp Byte_7 <br>Set_Bit_6: <br> bts ax, bx <br><br><br>Byte_7: <br> mov byte ptr [esi + 06h], al <br> mov al, byte ptr [esi + 07h] <br> cmp New_Bit_7 , 1 <br> je Set_Bit_7 <br> btr ax, bx <br> jmp Exit <br>Set_Bit_7: <br> bts ax, bx <br><br>Exit: <br> mov byte ptr [esi+07h], al <br> pop eax <br> ret <br>Set_New_Bits endp <br><br>;_______________________________________________________________________<br>;loop optimization :)<br>;<br>;Xor_Blocks proc <br>; push ebp<br>; xor ebp,ebp<br>;_b:<br>; mov al, byte ptr [esi][ebp] <br>; xor al, byte ptr [edi][ebp] <br>; xchg al,[esi][ebp]<br>; inc ebp<br>; cmp ebp,7<br>; jle _b<br>; pop ebp<br>; ret <br>;Xor_Blocks endp <br>;_______________________________________________________________________<br>Xor_Blocks proc <br> mov al, byte ptr [esi] ;операция xor с байтом блока ключа, блок на блок :) <br> xor al, byte ptr [edi] <br> xchg al, [esi] <br> mov al, byte ptr [esi + 01h] <br> xor al, byte ptr [edi + 01h] <br> xchg al, [esi + 01h] <br> mov al, byte ptr [esi + 02h] <br> xor al, byte ptr [edi + 02h] <br> xchg al, [esi + 02h] <br> mov al, byte ptr [esi + 03h] <br> xor al, byte ptr [edi + 03h] <br> xchg al, [esi + 03h] <br> mov al, byte ptr [esi + 04h] <br> xor al, byte ptr [edi + 04h] <br> xchg al, [esi + 04h] <br> mov al, byte ptr [esi + 05h] <br> xor al, byte ptr [edi + 05h] <br> xchg al, [esi + 05h] <br> mov al, byte ptr [esi + 06h] <br> xor al, byte ptr [edi + 06h] <br> xchg al, [esi + 06h] <br> mov al, byte ptr [esi + 07h] <br> xor al, byte ptr [edi + 07h] <br> xchg al, [esi + 07h] <br> ret <br>Xor_Blocks endp <br>;_______________________________________________________________________<br><br><br>Deshifr_Down_Offset proc <br> call Set_Old_Bits <br> call Vertical_Roter_Down <br> call Set_New_Bits <br> rol byte ptr [esi + edx], 01h <br> ret <br>Deshifr_Down_Offset endp <br>;_______________________________________________________________________<br>Deshifr_Up_Offset proc <br> call Set_Old_Bits <br> call Vertical_Roter_Up <br> call Set_New_Bits <br> ror byte ptr [esi + edx], 01h <br> ret <br>Deshifr_Up_Offset endp <br>;_______________________________________________________________________<br>Vertical_Roter_Down proc <br> push eax <br> xor eax, eax <br> mov al, Bit_0 <br> mov New_Bit_1, al <br> mov al, Bit_1 <br> mov New_Bit_2, al <br> mov al, Bit_2 <br> mov New_Bit_3, al <br> mov al, Bit_3 <br> mov New_Bit_4, al <br> mov al, Bit_4 <br> mov New_Bit_5, al <br> mov al, Bit_5 <br> mov New_Bit_6, al <br> mov al, Bit_6 <br> mov New_Bit_7, al <br> mov al, Bit_7 <br> mov New_Bit_0, al <br> pop eax <br> ret <br>Vertical_Roter_Down endp <br>;_______________________________________________________________________<br><br>Vertical_Roter_Up proc <br> push eax <br> xor eax, eax <br> mov al, Bit_7 <br> mov New_Bit_6, al <br> mov al, Bit_6 <br> mov New_Bit_5, al <br> mov al, Bit_5 <br> mov New_Bit_4, al <br> mov al, Bit_4 <br> mov New_Bit_3, al <br> mov al, Bit_3 <br> mov New_Bit_2, al <br> mov al, Bit_2 <br> mov New_Bit_1, al <br> mov al, Bit_1 <br> mov New_Bit_0, al <br> mov al, Bit_0 <br> mov New_Bit_7, al <br> pop eax <br> ret <br>Vertical_Roter_Up endp <br>;_______________________________________________________________________<br>BSCAS_Shifr proc <br> pusha <br>Shifr_Octo_Byte: <br> push edi ;Сохранить указател на ключ <br> push ecx ;сахраним число входных блоков <br> xor ebx, ebx ;Обнуляем регистры на всякие пожарные <br> xor eax, eax <br> xor edx, edx <br> mov cl, 08h ;8 блоков подключей <br>Key_Block: <br> push ecx ;сохранить число блоков <br> mov cl, 08h ;число подключей <br>@Loop_Per_Key: ;цикл по прохаждению подключей <br> push ecx ;сохранить число подключей <br> mov al, byte ptr [edi + edx] ;подключ в al <br> mov cl, 08h ;пробег по байту <br>@Loop_Per_Byte_Of_Key: <br> bt ax, bx <br> jc _LeftOffset ;Бит установлен ? <br> call Right_Offset ;Нет не установлен <br> jmp Next_Bit_Of_Key <br>_LeftOffset: <br> call Left_Offset <br>Next_Bit_Of_Key: <br> inc bx ;следущий бит ключа <br> loop @Loop_Per_Byte_Of_Key <br> xor ebx, ebx ;обнулим индекс столбцов <br> inc edx ;увеличим индекс строк <br> pop ecx ;восстановим стчечик подключей <br> loop @Loop_Per_Key <br> call Xor_Blocks ;операция xor над блоками <br> pop ecx ;восстановим счетчик блоков <br> xor edx, edx ;обнулим индекс строк <br> xor ebx, ebx <br> add edi, 08h ;переместим указатель на следущий блок ключей <br> loop Key_Block <br> pop ecx ;восстановим число входных блоков <br> pop edi ;восстановим указатель на ключ <br> add esi, 08h ;перейдем к следующему блоку <br> loop Shifr_Octo_Byte <br> popa <br> ret <br>BSCAS_Shifr endp <br>;_______________________________________________________________________<br>BSCAS_Deshifr proc <br> pusha <br> xor eax, eax ;очищаем eax, edx, ebx ( мусор нам не нужен :) ) <br> xor ebx, ebx <br> xor edx, edx <br> add edi, 56 ;перемещаем указатель на последний блок ключа <br>Deshifr_Octo_Byte: <br> push ecx ;сохраняем число входных блоков <br> push edi ;сохраняем указатель на ключ <br><br> mov cl, 08h ;число блоков подключей <br>Deshifr_Loop_Key_Block: <br> push ecx ;сохраняем число блоков подключей <br> ;Начальная стадия - <br> ;операции xor шифрованного блока с блоком подключей <br> call Xor_Blocks <br> mov cl, 08h ;количество подключей в блоке <br> mov dl, 07h ;начинаем снизу блока подключей <br>Deshifr_Loop_Per_Key: <br> push ecx ;сохраняем количество подключей <br> mov al, byte ptr [edi + edx] ;подключ <br> mov cl, 08h ;пробег по байту <br> mov bl, 07h <br>Deshifr_Loop_Per_Byte_Of_Key: <br> bt ax, bx ;Бит установлен ? <br> jc _Deshifr_Up_Offset ;Да установлен <br> call Deshifr_Down_Offset ;Нет не установлен <br> jmp _Deshifr_Inc <br>_Deshifr_Up_Offset: <br> call Deshifr_Up_Offset <br>_Deshifr_Inc: <br> dec bx ;уменьшаем указатель сталбцов <br> loop Deshifr_Loop_Per_Byte_Of_Key <br><br> xor ebx, ebx ;устанавливаем индекс сталбцов в ноль <br> dec edx ;уменьшаем индекс строк <br> pop ecx ;восстанавливаем количество подключей <br> loop Deshifr_Loop_Per_Key <br><br> sub edi, 08h ;переход к следующему блоку ключей <br> xor edx, edx ;устанавливаем индекс строки в ноль <br> pop ecx ;Восстанавливаем количество блоков ключей <br> loop Deshifr_Loop_Key_Block <br><br> pop edi ;восстанавливаем указатель на ключ <br> pop ecx ;восстанавливаем количество блоков к дешифрации <br> loop Deshifr_Octo_Byte <br> popa <br> ret <br>BSCAS_Deshifr endp <br>;_______________________________________________________________________<br> ;Автор разрешает использовать данный исходник <br> ;только при условии указания авторства <br> end start<br><br><br> ничего не менял оставил все как есть... теперь возвращаемся к ключу 64 dup (0ffh) и твоему шифрованию... пожалуйста посмотри а то я может о великий теоретик Зверюга что-то перепутал... ----------- тут я процитирую vot'а с небольшими изменениями... думаю он не будет против... ----------- О Великий и Ужасный Zveruga! Падаем на колени перед тобой и просим милосердно простить нас, ламеров позорных! Прости, о Великий! Бес нас попутал! Никогда больше мы и не подумаем ломать и ставить под сомнения твой божественый алгоритм шифрования. Мы очень сожалеем, что он оказался кривой.... Слезно просим - больше не надо придумывать таких сложных алгоритмов... Посыпаем голову пеплом, икренне потрясенные твоим могуществом, ламеры. ----------- |
|
Сообщ.
#21
,
|
|
|
|
Цитата IX0DeS, 28.03.03, 15:46:01 так привожу прогу полностью ![]() ![]() <br> pusha <br> call BSCAS_Shifr<br> popa <br> call BSCAS_Deshifr<br> .......<br> Я вот только понять не могу причем здесь pusha popa ??Здесь они нужны также как и собаке пятая нага. Цитата ничего не менял оставил все как есть... теперь возвращаемся к ключу 64 dup (0ffh) и твоему шифрованию... пожалуйста посмотри а то я может о великий теоретик Зверюга что-то перепутал... Deos я в принципе уже давно догадывался что ты полное трепло.Для чего ты клянчил у меня эти исходники что бы перековырять их и потом на весь форум кричать какой я полный ламер не умею пользаваться loop-ми.Так не делают.Или ты чуствуеш себя деловым и крутым сидя у себя там в кресле в конторки и лажая то что сделали другие. Цитата ----------- тут я процитирую vot'а с небольшими изменениями... думаю он не будет против... ----------- Ты слишком много думаеш за других а еще больше п.. без дела на других не отвечая за треп. |
|
Сообщ.
#22
,
|
|
|
|
Цитата Zveruga, 28.03.03, 16:14:48 Deos я в принципе уже давно догадывался что ты полное трепло.Для чего ты клянчил у меня эти исходники что бы перековырять их и потом на весь форум кричать я его "клянчил" чтобы посмотреть алгоритм... и нифига я не лажаю не надо наезжать... потом ты скажи я правильно пользуюсь твоим алгоритмом ? если да то почему не работает тогда ? если нет то покажи ошибку. Цитата какой я полный ламер не умею пользаваться loop-ми.Так не делают.Или ты чуствуеш себя деловым и крутым сидя у себя там в кресле в конторки и лажая то что сделали другие. Ты слишком много думаеш за других а еще больше п.. без дела на других не отвечая за треп. и такого я тоже не говорил... а то что ты там навоображал это твои проблемы.... Цитата Ты слишком много думаеш за других а еще больше п.. без дела на других не отвечая за треп. по моему я не переходил на личности и не ругался на тебя матом! я еще раз спрашиваю КАК МНЕ расшифровать ТРИ БЛОКА. и почему когда я использую ключ состоящий из 0xFF изменяются только первый и последний символ ? можешь нормально ответить? прогу я привел с которой я провожу все махинации... что нет так ПОКАЖИ plz! |