Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.01.2009, 02:47
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 1  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
По умолчанию Linear feedback shift register/Линейный сдвиговый регистр с обратной связью

Пытаюсь написать обратную функцию...
Совсем запутался... может кто моможет? А то я в этом не очень...

Код AS3:
var reg:uint = "A".charCodeAt();
var bit:uint;
var counter:int = 17;
var out:String = "";
out = reg.toString(2);
while(out.length < 16) out = "0" + out;
trace(out);
while(counter--)
{
	   bit = (reg & 0x0001) ^
			((reg & 0x0004) >> 2) ^
			((reg & 0x0008) >> 3) ^
			((reg & 0x0020) >> 5);
	   reg = (reg >> 1) | (bit << 15);
	   out = reg.toString(2);
	   while(out.length < 16) out = "0" + out;
	   trace("#", counter, "\t=>", out, "\t=>", String.fromCharCode(reg));
}
trace("------ decode -------");
counter = 17;
while(counter--)
{
	   bit = (reg & 0x0020) ^
			((reg & 0x0008) << 5) ^
			((reg & 0x0004) << 3) ^
			((reg & 0x0001) << 2);
	   reg = (reg << 1) <Что должно быть тут?>;
	   out = reg.toString(2);
	   while(out.length < 16) out = "0" + out;
	   trace("#", counter, "\t=>", out, "\t=>", String.fromCharCode(reg));
}
Ссылка на Википедию с объяснением
__________________
Hell is the possibility of sanity

Старый 22.01.2009, 23:14
badun вне форума Посмотреть профиль Отправить личное сообщение для badun Найти все сообщения от badun
  № 2  
Ответить с цитированием
badun

Регистрация: Dec 2007
Сообщений: 269
а оно вообще можно таким образом?

Старый 23.01.2009, 00:14
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 3  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Вот меня тоже сомнения начали мучать... я наверное чего-то не так сделал в енкодере... =( я не совсем понимаю по какому принципу добавляется первый бит, поэтому не понимаю как получить последний в обратной функции... наверное проще было бы сделать чтобы это был просто последний бит который "не влез".
__________________
Hell is the possibility of sanity

Старый 23.01.2009, 12:59
badun вне форума Посмотреть профиль Отправить личное сообщение для badun Найти все сообщения от badun
  № 4  
Ответить с цитированием
badun

Регистрация: Dec 2007
Сообщений: 269
Старший бит устанавливается если 1й, 3й, 4й и 6й биты по ксору дают единицу, т.е. если из них 4ых установлены 1 или 3 разряда. Если установлены 0, 2 или 4 бита, старший соответственно будет нулем.
Короче вот таким вот образом, как в исходнике написано, исходную последовательность не восстановить.
А в чем задача то вообще состоит?

Старый 23.01.2009, 15:28
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 5  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Задача была сделать текстовую информацию нечитаемой, а потом читаемой обратно Я наверное просто что-то не так понял / не так переписал в исходном преобразовании. Т.е. в таком варианте можно будет проверить только то, что переданый ключ был получен, но никак не получить новую информацию... Вобщем, ладно, спасибо, сделаю просто сдвиг вправо а потом влево. Не так уж важно...

EDIT:
Вобщем, вот на этом сердце успокоилось
Код AS3:
var reg:uint = "Z".charCodeAt();
var counter:int = 16;
var out:String = "";
out = reg.toString(2);
while(out.length < 16) out = "0" + out;
trace(out);
while(counter--)
{
	reg = (reg >> 1) | ((reg & 1) << 15);
	out = reg.toString(2);
	while(out.length < 16) out = "0" + out;
	trace("#", counter, "\t=>", out, "\t=>", String.fromCharCode(reg));
}
trace("------ decode -------");
counter = 16;
while(counter--)
{
	reg = ((reg << 1) & 0xFFFE) | (reg >> 15);
	out = reg.toString(2);
	while(out.length < 16) out = "0" + out;
	trace("#", counter, "\t=>", out, "\t=>", String.fromCharCode(reg));
}
__________________
Hell is the possibility of sanity


Последний раз редактировалось wvxvw; 23.01.2009 в 16:11.
Старый 23.01.2009, 18:05
badun вне форума Посмотреть профиль Отправить личное сообщение для badun Найти все сообщения от badun
  № 6  
Ответить с цитированием
badun

Регистрация: Dec 2007
Сообщений: 269
так а чем простой XOR не устроил?

Старый 23.01.2009, 18:09
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 7  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Чесно... это совсем не моя сильная сторона А каким образом с помощью XOR (^) можно сделать что-то похожее?
__________________
Hell is the possibility of sanity

Старый 23.01.2009, 18:16
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 8  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
Вкратце: (a^x)^x = a, т е побайтово xor-им с числом каким-то, а потом повторение этой операции нам расшифрует данные
__________________
4am is time to rock

Старый 23.01.2009, 18:43
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 9  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Ааа.... спасибо, да, понял, действительно просто
__________________
Hell is the possibility of sanity

Создать новую тему Ответ Часовой пояс GMT +4, время: 14:14.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
lfsr , xor

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 14:14.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.