Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Blowfish: шифрование меньше 8 байт 
V
    Опции темы
Alca
Дата 4.8.2009, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Можно ли данным алгоритмом (Blowfish) зашифровать данные меньше 8 байт.


--------------------
PM WWW ICQ Skype Jabber   Вверх
cardinal
Дата 4.8.2009, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Всегда ведь можно добавить в конце парочку пробелов... smile 


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Alca
Дата 4.8.2009, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Использую OpenSSL http://openssl.org/docs/crypto/blowfish.html#
Т.е. по идее текст для шифрование должен быть кратным 8 байтам. Я прав?


--------------------
PM WWW ICQ Skype Jabber   Вверх
Alexandr87
Дата 5.8.2009, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

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



Цитата(Alca @  4.8.2009,  16:40 Найти цитируемый пост)
Т.е. по идее текст для шифрование должен быть кратным 8 байтам. Я прав? 

блочные шрифты могут работать в нескольких режимах http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation
При этом, некоторые из режимов (CFB, OFB) позволяют использовать блочный шифр, как поточный. Как следствие не нужно добавить блок до полного.
Если используются другие режимы, то последний неполный блок дополняется до полного с помощью механизмов, которые называеются paddings http://en.wikipedia.org/wiki/Padding_%28cryptography%29

Цитата

Всегда ведь можно добавить в конце парочку пробелов... 

Ога, но не всегда потом отделить, что из пробелов было добавлено, а что уже присутствовало в шифруемом тексте.

Это сообщение отредактировал(а) Alexandr87 - 5.8.2009, 09:43
PM Jabber   Вверх
Alca
Дата 5.8.2009, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата

Ога, но не всегда потом отделить, что из пробелов было добавлено, а что уже присутствовало в шифруемом тексте.

А если вместо пробелов использовать '\0':
Код

CHAR chSymbol = '\0';

?

Добавлено через 7 минут и 3 секунды
Код

//http://openssl.org/docs/crypto/blowfish.html#
 #include <openssl/blowfish.h>
 void BF_set_key(BF_KEY *key, int len, const unsigned char *data);
 void BF_ecb_encrypt(const unsigned char *in, unsigned char *out,  BF_KEY *key, int enc);
 void BF_cbc_encrypt(const unsigned char *in, unsigned char *out,  long length, BF_KEY *schedule, unsigned char *ivec, int enc);
 void BF_cfb64_encrypt(const unsigned char *in, unsigned char *out, long length, BF_KEY *schedule, unsigned char *ivec, int *num, int enc);
 void BF_ofb64_encrypt(const unsigned char *in, unsigned char *out, long length, BF_KEY *schedule, unsigned char *ivec, int *num);
 const char *BF_options(void);
 void BF_encrypt(BF_LONG *data,const BF_KEY *key);
 void BF_decrypt(BF_LONG *data,const BF_KEY *key);

Цитата

BF_cbc_encrypt() operates on data that is a multiple of 8 bytes long, while BF_cfb64_encrypt() and BF_ofb64_encrypt() are used to encrypt an variable number of bytes (the amount does not have to be an exact multiple of 8). The purpose of the latter two is to simulate stream ciphers, and therefore, they need the parameter num, which is a pointer to an integer where the current offset in ivec is stored between calls. This integer must be initialized to zero when ivec is initialized.

Alexandr87, точно. Плохо читал мануал.


--------------------
PM WWW ICQ Skype Jabber   Вверх
Alexandr87
Дата 6.8.2009, 06:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

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



Цитата(Alca @ 5.8.2009,  12:54)
Цитата

Ога, но не всегда потом отделить, что из пробелов было добавлено, а что уже присутствовало в шифруемом тексте.

А если вместо пробелов использовать '\0':
Код

CHAR chSymbol = '\0';

?

Разницы нет. Если шифруемые данные могут заканчиваться данным байтом, то при дополнении вы не сможете точно определить что является дополнением, а что частью данных.
Если вы точно знаете, что шифруемые данные не будут окончиваться данным байтом, можете остаток забить ими, иначе можно использовать PKCS#7 padding.

PM Jabber   Вверх
Alca
Дата 6.8.2009, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата

Если вы точно знаете, что шифруемые данные не будут окончиваться данным байтом

Буду шифровать std::string (простой текст).

Это сообщение отредактировал(а) Alca - 6.8.2009, 10:50


--------------------
PM WWW ICQ Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


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

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


 




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


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

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