Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> "[C++] Шифрование jpeg методом Фейгенбаума", Программа 
V
    Опции темы
val88
Дата 12.3.2012, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 12.3.2012

Репутация: нет
Всего: нет



метод логистической параболы

Это сообщение отредактировал(а) val88 - 2.4.2012, 09:10
PM MAIL   Вверх
borisbn
Дата 18.3.2012, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 11
Всего: 135



Цитата(val88 @  12.3.2012,  20:44 Найти цитируемый пост)
В данной книге описана логистическая парабола

Т.е. ты предлагаешь
- найти эту книгу в интернете
- найти в ней эту параболу
- разобраться, что это за функция, как с ней работать, как с её помощью шифровать изображения
- написать на её основе функцию шифрования на Си++

так?
давай ка первые три пункта ты возьмешь на себя ...


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
val88
Дата 19.3.2012, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 12.3.2012

Репутация: нет
Всего: нет




Извините,пожалуйста(


Это сообщение отредактировал(а) val88 - 2.4.2012, 09:11
PM MAIL   Вверх
borisbn
Дата 19.3.2012, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 11
Всего: 135



Цитата(val88 @  19.3.2012,  09:50 Найти цитируемый пост)
xn+1 = 4rxn (1 − xn)

правильно ли я понимаю, что формула выглядит так
Цитата
x[ n + 1 ] = 4 * r * x[ n ] * ( 1 - x[ n ] )

если да, то формула какая-то странная...
при x[ 0 ] равном 0,5 x[ 1 ] равно 1 и все последующие равны 0
при x[ 0 ] равном 0,25 x[ 1 ] равно 0,75 и все последующие равны 0,75
при x[ 0 ] равном 100 через 5 итераций получаем 165-ю степень, а далее - переполнение...
вот. можешь убедиться http://liveworkspace.org/code/0212fb6dcb20...e5bdd223ece7949
если же будет правильная формула - задание простое...



--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
val88
Дата 19.3.2012, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 12.3.2012

Репутация: нет
Всего: нет




Может я как то не правильно сформулировала..


Это сообщение отредактировал(а) val88 - 2.4.2012, 09:11
PM MAIL   Вверх
val88
Дата 19.3.2012, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 12.3.2012

Репутация: нет
Всего: нет



Цитата(borisbn @ 19.3.2012,  10:48)
Цитата(val88 @  19.3.2012,  09:50 Найти цитируемый пост)
xn+1 = 4rxn (1 − xn)

правильно ли я понимаю, что формула выглядит так
Цитата
x[ n + 1 ] = 4 * r * x[ n ] * ( 1 - x[ n ] )

если да, то формула какая-то странная...
при x[ 0 ] равном 0,5 x[ 1 ] равно 1 и все последующие равны 0
при x[ 0 ] равном 0,25 x[ 1 ] равно 0,75 и все последующие равны 0,75
при x[ 0 ] равном 100 через 5 итераций получаем 165-ю степень, а далее - переполнение...
вот. можешь убедиться http://liveworkspace.org/code/0212fb6dcb20...e5bdd223ece7949
если же будет правильная формула - задание простое...

X0=0,34    и r=1
1 итерация    x[1]=4 * 1 * 0,34 * ( 1 - 0,34 )=0,8976
2 итерация    х[2]=4 * 1 *0,8976 * ( 1 - 0,8976)=0,36765696
3 итерация     х[3]=4 * 1 *0,36765696 * ( 1 - 0,36765696)=0,92994128



PM MAIL   Вверх
borisbn
Дата 19.3.2012, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 11
Всего: 135



да. с 0,34 получается нормальный ряд... ну... допустим.
тогда такой вопрос:
Цитата(val88 @  19.3.2012,  09:50 Найти цитируемый пост)
Действительное число x может быть записана как бесконечная десятичная дробь в двоичном представлении bmbm−1 . . . b1 . a1a2 . . . as, где ai, bj — биты, bmbm−1 . . . b1 соответствует целой части, а a1a2 . . . as — дробной части числа.

1. В твоём случае все b[ i ] будут равны 0. Это - нормально ?
2. Предлагаю не повторять в программе эти махинации с десятичной дробью и битами, а просто считать биты очередного полученного числа битами гаммы шифрования.

если со вторым согласна, то функция шифрования (она же дешифрования) будет выглядеть так
Код

const float r = 1.0f;
float func( float x ) {
    return 4 * r * x * ( 1 - x );
}

void cipherImage( unsigned long * imageBits, unsigned int bitsCount, float x0 ) {
    for ( unsigned int i = 0; i < bitsCount; i++ ) {
        unsigned long cipher = * ((unsigned long*)&x0);
        imageBits[ i ] ^= cipher;
        x0 = func( x0 );
    }
}

http://liveworkspace.org/code/6c53057b5ef8...5faddf7e91b4732


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
val88
Дата 19.3.2012, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 12.3.2012

Репутация: нет
Всего: нет



Цитата(borisbn @ 19.3.2012,  11:47)
просто считать биты очередного полученного числа битами гаммы шифрования.


Не совсем поняла фразу, не могли бы вы объяснить подробнее,пожалуйста!
PM MAIL   Вверх
borisbn
Дата 19.3.2012, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 11
Всего: 135



Цитата(borisbn @  19.3.2012,  11:47 Найти цитируемый пост)
unsigned long cipher = * ((unsigned long*)&x0);

здесь float'овское число считается целым. смотри, float'овские числа в памяти компьютера записываются следующим образом:
Цитата

знак    степень     мантисса
1бит     8 бит       23 бита

целое же число типа unsigned int записывается просто позиционным двоичным кодом. Т.к. разрядность у float и у unsigned int одинаковая (32 бита), то биты float'овского числа можно просто переложить один в один в биты целого числа. В указанной строчке именно это и делается


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
val88
Дата 19.3.2012, 19:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 12.3.2012

Репутация: нет
Всего: нет



Спасибо большое, я думаю так пойдет,главное чтоб работало)))
а подскажите еще, пожалуйста, теперь чтоб нам изменить биты изображения,надо как то побайтово считывать jpeg файл? или как то по другому?

Код

#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <time.h>
#include <string>
using namespace std;

int main()
{
 printf("Start\n");

 int i, rc;
 char buffer[2] = {0};
 FILE *fp = fopen("img.jpg", "rb");
 if (fp == NULL) {
  perror("Error open file");
  return 0;
 }
 for (i = 0; (rc = getc(fp)) != EOF && i < 10;buffer[1] = rc){
  printf("%x\n", buffer[1]);
 }
 
 fclose(fp);

 printf("\n");
 system("PAUSE");
 return 0;
}



мне говорили надо гамму пикселя изменять,к ней прибавлять значения,а как до этой информации добраться,подскажите, пожалуйста? 
PM MAIL   Вверх
borisbn
Дата 20.3.2012, 08:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 11
Всего: 135



Для чтения и "разворачивания" файла JPEG в набор пикселей лучше воспользоваться готовым решением. Например libjpeg


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
val88
Дата 26.3.2012, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 12.3.2012

Репутация: нет
Всего: нет



спасибо

Это сообщение отредактировал(а) val88 - 2.4.2012, 09:12
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0604 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.