Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.08.24;
Скачать: [xml.tar.bz2];

Вниз

XOR складывается?   Найти похожие ветки 

 
@!!ex ©   (2008-07-04 00:32) [0]

Есть строка.
Сначала ее зашифровали 16 битным ключом, потом 32 битным.
Есть ли общий ключ для расшировки через один XOR или все равно нужно два ключа?


 
oldman ©   (2008-07-04 00:34) [1]


> Сначала ее зашифровали 16 битным ключом, потом 32 битным.


Общий ключ я себе представляю, но слабо...


 
Zeqfreed ©   (2008-07-04 01:26) [2]

#include <stdio.h>
#include <string.h>

void xor(char *str, char base)
{
char *p = str;

while (*p) {
 *p = *p ^ base;
 p++;
}
}

int main()
{
char *a = strdup("abcdef");
char *b;

printf("a = %s\n", a);

xor(a, 10);
printf("xor 10: %s\n", a);
xor(a, 2);
printf("xor 10, 2: %s\n", a);

b = strdup(a);
xor(a, 2);
xor(a, 10);
printf("xor 10, 2, 2, 10: %s\n", a);

printf("b = %s\n", b);
xor(b, 2 ^ 10);
printf("xor 10, 2, %d: %s\n", 2 ^ 10, b);

free(a);
free(b);

return 0;
}

$ ./xor
a = abcdef
xor 10: khinol
xor 10, 2: ijklmn
xor 10, 2, 2, 10: abcdef
b = ijklmn
xor 10, 2, 8: abcdef


 
Zeqfreed ©   (2008-07-04 01:29) [3]

Ага, теперь я прочитал что ключи разной длины :)


 
oldman ©   (2008-07-04 01:32) [4]


> Zeqfreed ©   (04.07.08 01:29) [3]
> Ага, теперь я прочитал что ключи разной длины :)


вот и я два цикла представил, а один слабо.
но можно извратиться как-то :)


 
Zeqfreed ©   (2008-07-04 01:58) [5]

#include <stdio.h>
#include <string.h>

void xor8(char *str, char base)
{
char *p = str;

while (*p) {
 *p = *p ^ base;
 p++;
}
}

void xor32(char *str, int base)
{
printf("xoring by base %d\n", base);
int *p = (int *)str;
int len = strlen(str);

while (len) {
 *p = *p ^ base;
 p++;
 len -= 4;
}
}

int main()
{
char *a = strdup("abcdefgh");
char *b;

printf("a = %s\n", a);

xor8(a, 10);
printf("xor8 10: %s\n", a);
xor32(a, 2);
printf("xor8 10, xor32 2: %s\n", a);

b = strdup(a);
xor32(a, 2);
xor8(a, 10);
printf("unxor: %s\n", a);

printf("b = %s\n", b);
xor32(b, ((10 << 24) ^ (2 & 0xF000)) | ((10 << 16) ^ (2 & 0x0F00)) | ((10 << 8) ^ (2 & 0x00F0)) | (10 ^ 2));
printf("complex unxor: %s\n", b);

free(a);
free(b);

return 0;
}

$ ./xor
a = abcdefgh
xor8 10: khinolmb
xoring by base 2
xor8 10, xor32 2: ihinmlmb
xoring by base 2
unxor: abcdefgh
b = ihinmlmb
xoring by base 168430088
complex unxor: abcdefgh


 
Evgeny V ©   (2008-07-04 06:52) [6]


> @!!ex ©   (04.07.08 00:32)



>  XOR складывается?


Шифровали через XOR с ключами?

Если я правильно понял вопрос и описание того, что делается с данными, то -

XOR-ится.  

общийключ_32бит:=((ключ16_бит SHL 16) OR ключ16_бит) XOR ключ32_бит

Потом XOR массива данных, как массива 32-битных значений с общим ключом.

При обрабатываемом массиве данных,размером кратным 32 бита, других действий кроме как XOR c общийключ_32бит не понадобится. Это справедливо как для шифрования через XOR, так и для дешифрования.


 
Zeqfreed ©   (2008-07-04 07:01) [7]

Ну вот я так и знал, что никто код читать даже не станет. Хотя там все то же четко изложено :) Правда для случая 8 и 32 бит, но так хоть мозгом подумать можно немного.


 
Рамиль ©   (2008-07-04 09:36) [8]


> Zeqfreed ©   (04.07.08 07:01) [7]

Ну хтож здесь будет читать на С ломая глаза и мозг?:)


 
Anatoly Podgoretsky ©   (2008-07-04 09:44) [9]

> Рамиль  (04.07.2008 9:36:08)  [8]

Да и нафига читать, когда и так известно, что складывается. На этом же построены алгоритмы защиты данных в носителях.


 
palva ©   (2008-07-04 10:13) [10]

В вопросе смешаны два понятия длина ключа в битах и длина гаммы при гаммировании. На основе ключа небольшой длины можно создать очень длинную гамму для применения XOR.

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


 
Anatoly Podgoretsky ©   (2008-07-04 10:18) [11]

> palva  (04.07.2008 10:13:10)  [10]

Всем гаммам гамма.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2008.08.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.045 c
15-1215589105
oldman
2008-07-09 11:38
2008.08.24
Как Microsoft это делает?


15-1215425702
shlst
2008-07-07 14:15
2008.08.24
asm + отладка и что бы delphi-like


15-1215587634
SoundB
2008-07-09 11:13
2008.08.24
Помогите с SQL запросом


2-1216710409
Dimich1978
2008-07-22 11:06
2008.08.24
Как открыть в Richedit кодированный rtf


15-1215574736
AEN
2008-07-09 07:38
2008.08.24
Есть ли у Билла Гейтса ВО?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский