Георгий Скарбовский
80 повідомлень
#15 років тому
Есть задача считать аудио или видео файл и проскремблировать. Язык выполнения с++. С си дружу очень редко, так что считай нуб.. так вот по работе с потоковыми файлами уже битый час ищу инфу в гугле. Может кто подскажет?
Среда разработки VC
Заранее спасибо
Георгий Скарбовский
80 повідомлень
#15 років тому
Крик души.. почему гугл молчит?((
Тимур Ч.
300 повідомлень
#15 років тому
Скремблировать можно по-разному
чем ваc rar a archive file.mp3 -ppassword не устраивает?
Георгий Скарбовский
80 повідомлень
#15 років тому
Скремлировать нужно биты по заданной формуле.. вот и задача от сюда получить побитный код ави файла..
Evgenij L.
50 повідомлень
#15 років тому
Если вы работаете с файлом как с набором байтов\битов, то какая разница что он содержит? вам же не через кодек пропускать эту авишку. соответственно, и гуглить потоковую передачу данных не обязательно(в данном случае). достаточно погуглить чтение\запись файлов и битовые операции.
пример простого шифрования (xor):
Георгий Скарбовский
80 повідомлень
#15 років тому
Спасибо.. это я слва богу за пол дня мучений уже понял) Теперь вопрос как считать весь файл побайтно.. пытаюсь юзать std::ifstream не подскажите?
Evgenij L.
50 повідомлень
#15 років тому
Чтение файлов:

Георгий Скарбовский
80 повідомлень
#15 років тому
Собственно что то получилось.. биты получил по маске следующим (знаю что не лучшим, но всетаки работающим образом) Остается последний вопрос.. как из бит получить чаровский массив переменных.
Фукция получения бит:

char* ByteToBit(char*massiv,int size)
{
char*result=new char;
int pos=0;
for(int j=0;j<size;j++)
{
int mask=128;
for(int i=0;i<8;i++,pos++)
{
result=massiv&mask;
if(result!=0)result=1;
mask=mask>>1;
}
}
return result;

}


к слову использовать бы не хотелось.
Олег Казакевич
702 повідомлення
#15 років тому
Это никуда не годится.

У вас так сразу же начнуться заботы с утечкой памяти и производительностью.
Лучше напишите развернуто - что за формула.
А код придется переписать...
Георгий Скарбовский
80 повідомлень
#15 років тому
Формулой скремблирования пока не занимался. Сейчас задача получить биты и потом просто их собрать обратно в читаемый код. Если всетаки интересует формула - B(i) = A(i)+B(i-5)+B(i-15)

+ это сложение по модулю 2
Evgenij L.
50 повідомлень
#15 років тому
Цитата ("mamamiya"):
B(i) = A(i)+B(i-5)+B(i-15)
а что это за буквы? если B(i)-это бит(i), то что такое A?
по поводу получения битов:
unsigned char e = d & (1 << n); //d has the byte value.
хотя на самом деле проверять значение бита вам и не надо.
у вас в формуле есть (i-15), то есть можно работать с двумя парами байтов. можно написать нечто типа такого:
unsigned short x;
x=(A(i)|(y<<(k-5))|(y<<(k-15)))<<k; //вычисляется бит к
z=z|x; //формируется следующая пара байтов
A(i)-параметр А; к-номер вычисляемого бита; x-х; у-элементы массива, в который прочитан файл; z-следующий элемент.

зы псевдокод. в таком виде не юзабельно.
Георгий Скарбовский
80 повідомлень
#15 років тому
B - бит полученный в результате работы скремблера.
А - исходный бит
Георгий Скарбовский
80 повідомлень
#15 років тому
Получать биты прийдется в любом случае потому что по формуле в 1 такте скремблера используется значения битов из разных байтов..
Олег Казакевич
702 повідомлення
#15 років тому
Если i - это номер бита в потоке, то что делать при таких входных условиях, когда i < 5 или i < 15 ?
Георгий Скарбовский
80 повідомлень
#15 років тому
Тогда b(i-5) = a(i)
Олег Казакевич
702 повідомлення
#15 років тому
В проектах не пробовали размещать ?
Я бы сделал...
Тимур Ч.
300 повідомлень
#15 років тому
Скажу вам откровенно
не занимайтесь ерундой
существуют готовые надежные и быстрые криптоалгоритмы
а ваше скремблирование декодируется на раз
Evgenij L.
50 повідомлень
#15 років тому
То есть пойти к преподавателю(а существует очень высокая вероятность, что это задание от него) и сказать "не занимайтесь ерундой..."?
а биты как таковые получать не нужно, вычисление х в моём предыдущем посте. идея была в том, чтобы работать со структурой из двух пар байтов, первая пара-уже обработанное, вторая-обрабатываемое на сейчас. нечто типа кольцевого буфера на 32 бита
Георгий Скарбовский
80 повідомлень
#15 років тому
Цитата ("Nitrogeniy"):
То есть пойти к преподавателю(а существует очень высокая вероятность, что это задание от него) и сказать "не занимайтесь ерундой..."?

а оно так и есть)) с си работать для зароботка мне еще рановато)))
Буду пробовать как вы описали. Спасибо
Тимур Ч.
300 повідомлень
#15 років тому
Школьники...