Easyelectronics.ru

Электроника для всех
Текущее время: 18 окт 2019, 06:32

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 92 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Re: Обратимая функция 0..255 => месиво => 0..255
СообщениеДобавлено: 14 янв 2016, 09:29 
Заглядывает иногда

Зарегистрирован: 25 янв 2011, 23:42
Сообщения: 186
Int_13h писал(а):
Берется таблица ,чем больше тем лучше, пока памяти хватит


Tiny2313. Памяти 128 байт. Всё. Кончилась.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратимая функция 0..255 => месиво => 0..255
СообщениеДобавлено: 14 янв 2016, 09:36 
Заглядывает иногда

Зарегистрирован: 25 янв 2011, 23:42
Сообщения: 186
dev писал(а):
Да? о_0 Можно выкупить ксор в следующей последовательности?


Вы не поняли задачу. Исходная последовательность должна быть 0,1,2,3...255 и тогда да, выкупить ксор будет возможно.
Функция для обработки 1 байта, поэтому ксорить массив фразой нельзя.

Если вы дадите данные по моим условиям я вам скажу чем вы ксорили, да вы и сами поймете.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратимая функция 0..255 => месиво => 0..255
СообщениеДобавлено: 14 янв 2016, 09:38 
Заглядывает иногда

Зарегистрирован: 25 янв 2011, 23:42
Сообщения: 186
_pv писал(а):
посчитайте CRC8 от каждого числа


да всё прекрасно с CRC8. кроме одного, это необратимая функция. а тема звучит "Обратимая функция".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратимая функция 0..255 => месиво => 0..255
СообщениеДобавлено: 14 янв 2016, 10:55 
Заглядывает иногда

Зарегистрирован: 03 июл 2012, 19:16
Сообщения: 138
timsa писал(а):
Int_13h писал(а):
Берется таблица ,чем больше тем лучше, пока памяти хватит


Tiny2313. Памяти 128 байт. Всё. Кончилась.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратимая функция 0..255 => месиво => 0..255
СообщениеДобавлено: 14 янв 2016, 12:56 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 3999
Откуда: КЧР, поселок Нижний Архыз
Советую не париться, а использовать ssl. Самопальные методы псевдошифрования на основе XOR вполне нормально ломаются по закономерностям и словарям.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратимая функция 0..255 => месиво => 0..255
СообщениеДобавлено: 14 янв 2016, 12:57 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 3999
Откуда: КЧР, поселок Нижний Архыз
timsa писал(а):
Tiny2313. Памяти 128 байт. Всё. Кончилась.

Тогда забыть о "шифровании". Кстати, чтобы усложнить, можно ксорить каким-нибудь шаблоном байт на 32-64.
Только вот нафига на мелкоконтроллере что-то шифровать? Смысл??


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратимая функция 0..255 => месиво => 0..255
СообщениеДобавлено: 14 янв 2016, 13:12 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 3999
Откуда: КЧР, поселок Нижний Архыз
Во:
Код:
cat xor.c
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>

void xor(char *buf, char *pattern, size_t l){
   size_t i;
   for(i = 0; i < l; ++i)
      printf("%c", buf[i] ^ pattern[i]);
}

int main(int argc, char **argv){
   if(argc != 3){
      printf("Usage: %s <infile> <password>\n", argv[0]);
      return -1;
   }
   char *key = strdup(argv[2]);
   size_t n = 0, keylen = strlen(key);
   char *buff = malloc(keylen);
   int f = open(argv[1], O_RDONLY);
   if(f < 0){
      perror("Can't open file");
      return f;
   }
   do{
      n = read(f, buff, keylen);
      xor(buff, key, n);
   }while(n);
   return 0;
}

Код:
cat file
1234567890123456789012345678901234567890
1234567890123456789012345678901234567890
abcdefghijklmnopqrstuvwxyz
абвгдежзийклмнопрстуфхцчшщъыьэюя
abcdefghijklmnopqrstuvwxyz
абвгдежзийклмнопрстуфхцчшщъыьэюя
abcdefghijklmnopqrstuvwxyz
абвгдежзийклмнопрстуфхцчшщъыьэюя
abcdefghijklmnopqrstuvwxyz
абвгдежзийклмнопрстуфхцчшщъыьэюя

Код:
gcc xor.c -o xor
./xor file паролище > crypt
hexdump crypt
0000000 f3e1 fbe1 fff9 fdea f1e9 fde3 fdff f3e8
0000010 f9e7 ffeb fbfd f1ee f7e5 f7e5 f9f5 f7ec
0000020 f5e3 f9e7 f1fb f5e4 f0da fce0 fcf8 f2eb
0000030 f8e8 fee2 fafe f0e9 f6e6 f6ea f8fc f6ef
0000040 f4e4 f8e4 f0f4 f4ed f2e2 fae6 fefa fce5
0000050 cbe0 adb3 adaf a3b8 a9b7 a5bb a5a7 abb0
0000060 b1bf bda3 bdbf b3a8 b9a7 b5ab 08c6 121f
0000070 0517 1917 0016 0e17 0c1c 001c 1b1c 110e
0000080 0705 0c1a 1212 1a00 1909 0f0e c31d a7bc
0000090 a5b3 a9b7 a1ab afb4 adbb a1bf b9a3 b7ac
00000a0 b5a3 b9a7 b1bb bfa4 00da 1810 0d0b 1318
00000b0 080a 0418 0400 0a13 1300 1b01 0f19 0615
00000c0 1a0e 100f 1115 0501 cb01 adb3 adaf a3b8
00000d0 a9b7 a5bb a5a7 abb0 b1bf bda3 bdbf b3a8
00000e0 b9a7 b5ab 08c6 121f 0517 1917 0016 0e17
00000f0 0c1c 001c 1b1c 110e 0705 0c1a 1212 1a00
0000100 1909 0f0e c31d a7bc a5b3 a9b7 a1ab afb4
0000110 adbb a1bf b9a3 b7ac b5a3 b9a7 b1bb bfa4
0000120 00da 1810 0d0b 1318 080a 0418 0400 0a13
0000130 1300 1b01 0f19 0615 1a0e 100f 1115 0501
0000140 cb01                                   
0000142

Код:
./xor crypt паролище       
1234567890123456789012345678901234567890
1234567890123456789012345678901234567890
abcdefghijklmnopqrstuvwxyz
абвгдежзийклмнопрстуфхцчшщъыьэюя
abcdefghijklmnopqrstuvwxyz
абвгдежзийклмнопрстуфхцчшщъыьэюя
abcdefghijklmnopqrstuvwxyz
абвгдежзийклмнопрстуфхцчшщъыьэюя
abcdefghijklmnopqrstuvwxyz
абвгдежзийклмнопрстуфхцчшщъыьэюя


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратимая функция 0..255 => месиво => 0..255
СообщениеДобавлено: 14 янв 2016, 14:30 
Старожил

Зарегистрирован: 10 июн 2011, 23:01
Сообщения: 3297
timsa писал(а):
да всё прекрасно с CRC8. кроме одного, это необратимая функция. а тема звучит "Обратимая функция".

CRC от одного байта - вполне себе обратимо и однозначно переводит байт -> байт.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратимая функция 0..255 => месиво => 0..255
СообщениеДобавлено: 14 янв 2016, 14:35 
Заглядывает иногда

Зарегистрирован: 25 янв 2011, 23:42
Сообщения: 186
Eddy_Em писал(а):
Во:

какое отношение это имеет к задаче?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратимая функция 0..255 => месиво => 0..255
СообщениеДобавлено: 14 янв 2016, 14:56 
Заглядывает иногда

Зарегистрирован: 25 янв 2011, 23:42
Сообщения: 186
_pv писал(а):
CRC от одного байта - вполне себе обратимо и однозначно переводит байт -> байт.


Покажите реализацию, не могу найти.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратимая функция 0..255 => месиво => 0..255
СообщениеДобавлено: 14 янв 2016, 14:59 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 3999
Откуда: КЧР, поселок Нижний Архыз
timsa писал(а):
Eddy_Em писал(а):
Во:

какое отношение это имеет к задаче?

Непосредственное: простое "шифрование" по ключу длиной N байт.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратимая функция 0..255 => месиво => 0..255
СообщениеДобавлено: 14 янв 2016, 14:59 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 3999
Откуда: КЧР, поселок Нижний Архыз
_pv писал(а):
timsa писал(а):
да всё прекрасно с CRC8. кроме одного, это необратимая функция. а тема звучит "Обратимая функция".

CRC от одного байта - вполне себе обратимо и однозначно переводит байт -> байт.

Побайтовая CRC одного байта - и есть этот самый байт. А побитовая уже необратима.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратимая функция 0..255 => месиво => 0..255
СообщениеДобавлено: 14 янв 2016, 15:09 
Заглядывает иногда

Зарегистрирован: 25 янв 2011, 23:42
Сообщения: 186
Eddy_Em писал(а):
timsa писал(а):
Eddy_Em писал(а):
Во:

какое отношение это имеет к задаче?

Непосредственное: простое "шифрование" по ключу длиной N байт.

вы сделали банальный xor который совершенно не подходит ввиду предсказуемости

а я прошу обратимую функцию с большим разбросом результата


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратимая функция 0..255 => месиво => 0..255
СообщениеДобавлено: 14 янв 2016, 15:25 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2621
Откуда: Санкт-Петербург
Ну заморочьтесь вы сами комбинацией из нескольких функций:
1. xor.
2. Перестановка бит (надеюсь, через and/ror/or сделаете)
3. Умножение на нечётное число X (для обратной операции надо найти нечётное Y: X*Y mod 256 = 1; можете это сделать перебором на компе; обратная операция - умножение на Y)

Навскидку - вначале умножить на какое-то число (чтобы "подмешать" младшие биты в старшие), потом переставить биты (на самом деле хватит одного rol - чтобы старший бит после предыдущей операции ушёл в младший), потом опять умножить. Ну и xor напоследок, чтобы последовательность начиналось не с нуля. Не проверял.

А готового рецепта нет, потому что для _байтов_ никому такое никогда не надо было. Любой "шифр" на байте ломается тупо таблицей.


Последний раз редактировалось aamonster 14 янв 2016, 16:15, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратимая функция 0..255 => месиво => 0..255
СообщениеДобавлено: 14 янв 2016, 15:51 
Старожил
Аватара пользователя

Зарегистрирован: 26 янв 2010, 21:48
Сообщения: 3965
Откуда: Звенигород
Генерить блок псевдо случайных чисел. В него загонять нужное число, поксорить по таблице во флеше и отправлять.

_________________
От Парижа до Находки с водкой лучше, чем без водки!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратимая функция 0..255 => месиво => 0..255
СообщениеДобавлено: 14 янв 2016, 16:56 
Заглядывает иногда

Зарегистрирован: 25 янв 2011, 23:42
Сообщения: 186
вот пока что наилучший мой вариант: перестановка, ксор, перестановка
Изображение

aamonster писал(а):
3. Умножение на нечётное число X (для обратной операции надо найти нечётное Y: X*Y mod 256 = 1; можете это сделать перебором на компе; обратная операция - умножение на Y)


кстати да, хорошая штука, я про нее забыл, спасибо


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратимая функция 0..255 => месиво => 0..255
СообщениеДобавлено: 14 янв 2016, 17:50 
Заглядывает иногда

Зарегистрирован: 25 янв 2011, 23:42
Сообщения: 186
на одном умножении и ксорах можно сделать красиво
Изображение

вот только на тиньках его нету :(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратимая функция 0..255 => месиво => 0..255
СообщениеДобавлено: 14 янв 2016, 17:55 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 3999
Откуда: КЧР, поселок Нижний Архыз
timsa писал(а):
вы сделали банальный xor который совершенно не подходит ввиду предсказуемости
а я прошу обратимую функцию с большим разбросом результата

Не надо противоречить себе же! На тупом пике только банальных xor и подойдет!
А про нормальное шифрование я уже говорил - SSL!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратимая функция 0..255 => месиво => 0..255
СообщениеДобавлено: 14 янв 2016, 18:34 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2621
Откуда: Санкт-Петербург
Нормального шифрования одного байта быть не может в принципе =)
Но xor слишком бросается в глаза - каждый бит меняется независимо и однозначно. Есть резон перемешать биты и замешать одни биты в другие - что элементарно делается хоть перестановкой бит и умножением на константу. Но всё равно, на 8 битах это слёзы: человек один раз получит последовательность и сохранит её где-нибудь, и все дела.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратимая функция 0..255 => месиво => 0..255
СообщениеДобавлено: 14 янв 2016, 18:58 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 3999
Откуда: КЧР, поселок Нижний Архыз
Я уже говорил: зачем цепляться к xor'у по однобайтному ключу? Сделайте 32-байтный ключ — и будет вам щассье! В этом случае обнаружить закономерности можно будет только на строгих повторах по 32 байта. А такое маловероятно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратимая функция 0..255 => месиво => 0..255
СообщениеДобавлено: 14 янв 2016, 19:32 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2621
Откуда: Санкт-Петербург
Ну вот такая странная задача у топикстартера. Так-то понятно, что если не нужно перекодировать каждый байт независимо - то возникает много удобных вариантов (потоковые шифры, блочные с нормальным размером блока, блочные в режимах CBC/CFB/OFB и т.п.). Один из самых дешёвых - использовать саму прошивку для генерации гамма-последовательности.
Но, повторяюсь, это другая задача - ему зачем-то надо каждый байт независимо кодировать. Хотя, возможно, если расспросить подробнее о задаче...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратимая функция 0..255 => месиво => 0..255
СообщениеДобавлено: 15 янв 2016, 10:51 
Заглядывает иногда

Зарегистрирован: 25 янв 2011, 23:42
Сообщения: 186
aamonster писал(а):
Ну вот такая странная задача у топикстартера.
Хотя, возможно, если расспросить подробнее о задаче...


Да и большое спасибо тем, кто помогает решить поставленную задачу, а не предлагает изменить условия т.к. они ему не нравятся/глупые/непонятные/лень читать (нужное подчеркнуть).

Применять кодирование одного байта (в случае сферического коня в вакууме) конечно глупо. Но допустим что эти данные транслируются по радио очень малыми порциями (например брелок от сигналки). Т.е. вероятность что злоумышленник получит 1,2,3,4,5,6 посылок подряд очень велика (открываешь машину у торгового центра...). Но вероятность что злоумышленник получит 32..255 посылок подряд равна нулю.

В моей задаче нужно чтобы передаваемые ПОСЛЕДОВАТЕЛЬНЫЕ числа не выглядели таковыми. Это порядковый номер сообщения и мне хочется чтобы в случае перехвата он не выглядел номером. Ессно банального ксора тут хватило бы с головой, но мне хотелось поизвращаться ну и увеличить энтропию :)

Комбинация ксора, вращения и умножения дает устраивающий меня результат и укладывается в 20 команд доступных даже на tiny13:

Изображение


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратимая функция 0..255 => месиво => 0..255
СообщениеДобавлено: 15 янв 2016, 11:14 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 3999
Откуда: КЧР, поселок Нижний Архыз
В случае брелока от сигналки я бы использовал операции "рукопожатия" похожие на подключение по ssh через ключи.
И тинька здесь явно в проигрыше. Лучше почеловечней мелкоконтроллер использовать, который сможет ssl.

То, что вы предлагаете, совершенно неработоспособно. Ну представьте: нужно поменять батарейку. Ну или еще что произошло, и в пульте или приемнике счетчик сбросился на нуль, в то время как во втором устройстве оставил прежние значения. И что при этом будете делать? Открывать машину ключом и при помощи мастер-пароля сбрасывать счетчик?

А так все достаточно просто: пульт передает приемнику свой открытый ключ; приемник шифрует этим ключем свой открытый ключ и шлет обратно. Без закрытого ключа передатчика злоумышленник получить открытый ключ приемника не сможет.
Далее все операции шифруем открытым ключом принимающей стороны.
Все кошерненько и безопасненько.

Понятно, что ксоры здесь никак не годятся. Только пара открытый-закрытый ключи.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратимая функция 0..255 => месиво => 0..255
СообщениеДобавлено: 15 янв 2016, 11:16 
Старожил

Зарегистрирован: 26 ноя 2012, 10:28
Сообщения: 3999
Откуда: КЧР, поселок Нижний Архыз
Вот, для затравки: https://www.wolfssl.com/wolfSSL/wolfssl-stm32.html

И еще: http://www.oryx-embedded.com/cyclone_ssl.html

В общем, гугол в помощь.

И про разработку сигналки: http://geektimes.ru/post/257196/


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Обратимая функция 0..255 => месиво => 0..255
СообщениеДобавлено: 15 янв 2016, 11:30 
Старожил

Зарегистрирован: 19 мар 2013, 19:37
Сообщения: 2621
Откуда: Санкт-Петербург
timsa писал(а):
В моей задаче нужно чтобы передаваемые ПОСЛЕДОВАТЕЛЬНЫЕ числа не выглядели таковыми. Это порядковый номер сообщения и мне хочется чтобы в случае перехвата он не выглядел номером. Ессно банального ксора тут хватило бы с головой, но мне хотелось поизвращаться ну и увеличить энтропию :)

Т.е. номер передаётся всё же не сам по себе, а вместе с сообщением? Это же полностью меняет дело: сообщение можно шифровать целиком (дополнив до минимального объёма при необходимости). Опционально - вместе с контрольной суммой сообщения.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 92 ]  На страницу Пред.  1, 2, 3, 4  След.

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB