Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2011, 14:49   #1
Rydj
Пользователь
 
Регистрация: 22.01.2011
Сообщений: 17
Восклицание [C] Эмуляция работы скремблера

Доброго времени суток. Народ не могли бы мне помочь дописать скремблер задача такая: написать программу эмулирующую работу скремблера, программа должна генерировать поток битов из
скремблера и использовать его (группируя по 8 бит) для шифрования байтов,
считанных со стандартного ввода, пока они имеются; зашифрованные данные
выводятся на стандартный вывод. Собственно со скремблером я вроде разобрался и написал, а вот дальше какой-то ступор.

Код:
#include <stdio.h>

int shift(int *s, int poly, int size)
{
	int result =*s&1;
	int a=0;
	int b=*s&poly;
while (b) {
	a+=b&1;
	b>>=1;
}
	*s>>=1;
	*s|= (a&1)<<(size-1);
	return result;
}

int main()
{
	int s;
        int i;
        int m;
        i = 1;
        s = 742;
        for (i = 1; i < 100; i++)
        {
	   m = shift(&s, 742, 10);
	   printf("%d\n", m);
        }
}

Последний раз редактировалось JTG; 03.02.2011 в 15:11.
Rydj вне форума Ответить с цитированием
Старый 03.02.2011, 15:23   #2
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

судя по цитате из википедии:
Цитата:
Вновь поступающий в скремблер бит суммируется по модулю два с битом псевдослучайной последовательности. После чего бит отправляется на выход, скремблер берет следующий входной бит псевдослучайной и входной последовательности и повторяет операцию
получается надо просто сделать A ^ B и выдать полученное число по битам на выход ?

Последний раз редактировалось NiCola999; 03.02.2011 в 15:55.
NiCola999 вне форума Ответить с цитированием
Старый 03.02.2011, 16:00   #3
Rydj
Пользователь
 
Регистрация: 22.01.2011
Сообщений: 17
По умолчанию

спс, вроде так, мне сейчас на другом форуме ответили

Цитата:
int shift8(int *s, int poly, int size)
{
int rv=0;
int i;
for(i=0;i<8;++i) rv=(rv<<1)|shift8(s,poly,size);
}
int main()
{
int s;
int i;
int m;
s = 742;
while((i = getchar()) != EOF)
{
m = shift8(&s, 742, 10);
putchar(m^i);
}
}
Rydj вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Эмуляция в играх magros Общие вопросы .NET 6 21.06.2010 07:06
Эмуляция реестра Simply-Art Общие вопросы Delphi 20 06.09.2009 15:31
Эмуляция работы мыши R@mec Общие вопросы C/C++ 2 23.08.2008 14:50
Эмуляция Mago Паскаль, Turbo Pascal, PascalABC.NET 3 27.07.2008 23:33
Эмуляция консоли... Sota Общие вопросы C/C++ 4 20.01.2008 01:04