The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Как в /bin/sh красиво отксорить строку ключом? "
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Как в /bin/sh красиво отксорить строку ключом? "  +/
Сообщение от DeadLoco (ok) on 25-Июн-11, 23:02 
В циклах - понятно, но не нравится. Нутром чую, что должно быть элегантное решение, но найти не могу.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Как в /bin/sh красиво отксорить строку ключом? "  +/
Сообщение от dogonthesun (ok) on 26-Июн-11, 08:36 
> В циклах - понятно, но не нравится. Нутром чую, что должно быть
> элегантное решение, но найти не могу.

приведите пример исходных строк, ключа и вывода.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Как в /bin/sh красиво отксорить строку ключом? "  +/
Сообщение от Aquarius (ok) on 26-Июн-11, 11:46 
> В циклах - понятно, но не нравится. Нутром чую, что должно быть
> элегантное решение, но найти не могу.

/bin/sh /bin/sh'у рознь

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Как в /bin/sh красиво отксорить строку ключом? "  +/
Сообщение от pavlinux (ok) on 27-Июн-11, 16:29 
>  Нутром чую, что должно быть элегантное решение, но найти не могу.

И не найдёшь.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Как в /bin/sh красиво отксорить строку ключом? "  +/
Сообщение от DeadLoco (ok) on 27-Июн-11, 16:33 
>>  Нутром чую, что должно быть элегантное решение, но найти не могу.
> И не найдёшь.

Обоснуй.

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Как в /bin/sh красиво отксорить строку ключом? "  +/
Сообщение от pavlinux (ok) on 27-Июн-11, 16:36 
>>>  Нутром чую, что должно быть элегантное решение, но найти не могу.
>> И не найдёшь.
> Обоснуй.

XOR это побитовая операция над целыми или битовая над логическим операндами.
Поэтому "WORLD" ^ "KEY" - звучит глупо, хотя бы из-за того что не совпадает размер строк.

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Как в /bin/sh красиво отксорить строку ключом? "  +/
Сообщение от DeadLoco (ok) on 27-Июн-11, 16:38 
> XOR это побитовая операция над целыми или битовая над логическим операндами.
> Поэтому "WORLD" ^ "KEY" - звучит глупо, хотя бы из-за того что
> не совпадает размер строк.

ОМГ.

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Как в /bin/sh красиво отксорить строку ключом? "  +/
Сообщение от pavlinux (ok) on 27-Июн-11, 16:41 
>> XOR это побитовая операция над целыми или битовая над логическим операндами.
>> Поэтому "WORLD" ^ "KEY" - звучит глупо, хотя бы из-за того что
>> не совпадает размер строк.
> ОМГ.

Ну тогда поясняй на языке мат. логики задачу "красиво отксорить строку ключом"


Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "Как в /bin/sh красиво отксорить строку ключом? "  +/
Сообщение от DeadLoco (ok) on 27-Июн-11, 17:14 
> Ну тогда поясняй на языке мат. логики задачу "красиво отксорить строку ключом"

Гугль на тему "XOR-криптование" выдает массу полезной инфы. Если гуглить лень, то вкратце идея следующая: строка сообщения "HELLO WORLD" побайтно ксорится с циклическим повторением ключа "KEYKEYKEYKE". Повторный ксор по ключу восстанавливает исходное сообщение. Для коротких сообщений и длинных ключей - наиболее надежный и эффективный метод симметричного шифрования. Но нам же это знать совершенно ни к чему, верно?


Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "Как в /bin/sh красиво отксорить строку ключом? "  +/
Сообщение от pavlinux (ok) on 27-Июн-11, 17:36 
> строка сообщения "HELLO WORLD" побайтно ксорится

А можно еще и так


for i in "HELLO WORLD"  
  do
     i = i XOR "K";
     i = i XOR "E";
     i = i XOR "Y";
done

или так, со сдвигом.

for i in "HELLO WORLD"  
  do
     i = i XOR "K";
     i = i XOR "E";
     i = i XOR "Y";
     i++;
     i = i XOR "E";
     i = i XOR "Y";
     i = i XOR "K";
     i++;
     i = i XOR "Y";
     i = i XOR "E";
     i = i XOR "K";
done

:)

> с циклическим повторением ключа

Точно! Осталось придумать ацикличный, потоковый XOR :)


Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "Как в /bin/sh красиво отксорить строку ключом? "  +/
Сообщение от pavlinux (ok) on 27-Июн-11, 18:03 
>> Ну тогда поясняй на языке мат. логики задачу "красиво отксорить строку ключом"
> Гугль на тему "XOR-криптование" выдает массу полезной инфы. Если гуглить лень, то
> вкратце идея следующая: строка сообщения "HELLO WORLD" побайтно ксорится с циклическим
> повторением ключа "KEYKEYKEYKE". Повторный ксор по ключу восстанавливает исходное сообщение.

1. Тебе нужно расширить длину ключа до длины "HELLO WORLD"

без цикла делается это SIZEOF("HELLO WORLD") / SIZEOF("KEY");  получим 4
перед тем как начать потоковый XOR придется объединить все "KEY" 4 раза,
иначе без цикла не получиться. Для объединения нужон аналог strcat()


#include <string.h>

char *strcat(char *s, char *append)
{
    char *save = s;

    for (; *s; ++s);
       while ((*s++ = *append++) != 0);

  return(save);
}


Облом, опят цикл.


Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

11. "Как в /bin/sh красиво отксорить строку ключом? "  +/
Сообщение от Aquarius (ok) on 27-Июн-11, 22:20 
>> Ну тогда поясняй на языке мат. логики задачу "красиво отксорить строку ключом"
> Гугль на тему "XOR-криптование" выдает массу полезной инфы. Если гуглить лень, то
> вкратце идея следующая: строка сообщения "HELLO WORLD" побайтно ксорится с циклическим
> повторением ключа "KEYKEYKEYKE". Повторный ксор по ключу восстанавливает исходное сообщение.
> Для коротких сообщений и длинных ключей - наиболее надежный и эффективный
> метод симметричного шифрования. Но нам же это знать совершенно ни к
> чему, верно?

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

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

12. "Как в /bin/sh красиво отксорить строку ключом? "  +/
Сообщение от DeadLoco (ok) on 27-Июн-11, 23:06 
> только это твоя проблема, как задавшего вопрос, сделать так, чтобы вопрос был
> не только вполне понятен, но и, по возможности, не допускал неоднозначной
> трактовки

"Отксорить строку ключом" - совершенно однозначная постановка вопроса, вполне понятная тем, кто в теме.

Экскюзе се муа, не в моих силах сделать все понятным каждому. Я бы этого очень хотел, это значительно упростило бы жизнь, но увы.

Ответить | Правка | ^ к родителю #11 | Наверх | Cообщить модератору

13. "Как в /bin/sh красиво отксорить строку ключом? "  +/
Сообщение от pavlinux (ok) on 28-Июн-11, 01:39 
> "Отксорить строку ключом" - совершенно однозначная постановка вопроса, вполне понятная
> тем, кто в теме.

Постановка однозначная, решений может быть дофига, но без цикла никак.

Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

14. "Как в /bin/sh красиво отксорить строку ключом? "  +/
Сообщение от DeadLoco (ok) on 28-Июн-11, 02:00 
> Постановка однозначная, решений может быть дофига, но без цикла никак.

Жаль, строковых функций приличных нет. Щас еще сед/авк колупаю.

Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

15. "Как в /bin/sh красиво отксорить строку ключом? "  +/
Сообщение от Aquarius (ok) on 28-Июн-11, 03:53 
>> Постановка однозначная, решений может быть дофига, но без цикла никак.
> Жаль, строковых функций приличных нет. Щас еще сед/авк колупаю.

и все-таки, интересно было бы знать, о какой системе идет речь
я предполагаю, что о FreeBSD, раз нет рассуждений о несоизмеримости возможностей bash и dash
не пойму только, почему для всех участников дискуссии это очевидно, а для меня нет

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

16. "Как в /bin/sh красиво отксорить строку ключом? "  +/
Сообщение от pavlinux (ok) on 28-Июн-11, 04:20 
> не пойму только, почему для всех участников дискуссии это очевидно, а для
> меня нет

Врубай метод исключений.  

1. XOR операция битовая.
2. Строка это не элементарный тип.
3. Строка это массив байт.
4. Две строки - два массива.
5. XOR на двумя строками сводиться к XOR над элементами из этих массивов.
6. Единственно, них...я не сказано про порядок выборки операндов для XOR.
7. Автор хочет, не применяя циклов, сделать XOR меж двумя строками, по описанным выше правилам.    
8. Область определения, видимо утилиты UNIX или shell.

:)


Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

17. "Как в /bin/sh красиво отксорить строку ключом? "  +/
Сообщение от Aquarius (ok) on 28-Июн-11, 09:57 
>[оверквотинг удален]
> 2. Строка это не элементарный тип.
> 3. Строка это массив байт.
> 4. Две строки - два массива.
> 5. XOR на двумя строками сводиться к XOR над элементами из этих
> массивов.
> 6. Единственно, них...я не сказано про порядок выборки операндов для XOR.
> 7. Автор хочет, не применяя циклов, сделать XOR меж двумя строками, по
> описанным выше правилам.
> 8. Область определения, видимо утилиты UNIX или shell.
> :)

из всего этого списка я говорил только про 8
а теперь моя очередь :)
1. /bin/sh, в общем случае, не может быть абстрактым
2. например, в GNU/Linux раньше это (почти всегда) был bash
3. теперь это (еще только будет) (во многих случаях) еще и dash
4. во FreeBSD, NetBSD (и, видимо, OpenBSD) это ash
5. оно все, конечно же, должно соответствовать POSIX, и, вроде как, так оно и есть (а вот теперь я понял)

Ответить | Правка | ^ к родителю #16 | Наверх | Cообщить модератору

18. "Как в /bin/sh красиво отксорить строку ключом? "  +/
Сообщение от DeadLoco (ok) on 28-Июн-11, 12:34 
> не пойму только, почему для всех участников дискуссии это очевидно, а для меня нет

Потому что /bin/sh, на самом деле - весьма конкретная сущность, а не абстрактный пойнт, на который что хочу, то и линкую. Да, будучи надмножествами sh, разные *ash могут заменять классический sh Борна, но посиксовым стандартом является, все-таки, именно sh, и именно sh в наибольшей степени обеспечивает межплатформенную и версионную совместимость. При всей убогости его средств.

Ответить | Правка | ^ к родителю #15 | Наверх | Cообщить модератору

19. "Как в /bin/sh красиво отксорить строку ключом? "  +/
Сообщение от Aquarius (ok) on 28-Июн-11, 13:47 
>> не пойму только, почему для всех участников дискуссии это очевидно, а для меня нет
> Потому что /bin/sh, на самом деле - весьма конкретная сущность, а не
> абстрактный пойнт, на который что хочу, то и линкую. Да, будучи
> надмножествами sh, разные *ash могут заменять классический sh Борна, но посиксовым
> стандартом является, все-таки, именно sh, и именно sh в наибольшей степени
> обеспечивает межплатформенную и версионную совместимость. При всей убогости его средств.

да, спасибо!
я уже пришел к пониманию

Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

20. "Как в /bin/sh красиво отксорить строку ключом? "  +/
Сообщение от ACCA (ok) on 28-Июн-11, 15:21 
>> Постановка однозначная, решений может быть дофига, но без цикла никак.
> Жаль, строковых функций приличных нет. Щас еще сед/авк колупаю.

Чем тогда тот же gpg -c --passphrase 'KEY' неполноценен?

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

21. "Как в /bin/sh красиво отксорить строку ключом? "  +/
Сообщение от Aquarius (ok) on 28-Июн-11, 20:59 
>>> Постановка однозначная, решений может быть дофига, но без цикла никак.
>> Жаль, строковых функций приличных нет. Щас еще сед/авк колупаю.
> Чем тогда тот же gpg -c --passphrase 'KEY' неполноценен?

видимо, тем, что gpg не является компонентом /bin/sh

Ответить | Правка | ^ к родителю #20 | Наверх | Cообщить модератору

22. "Как в /bin/sh красиво отксорить строку ключом? "  +/
Сообщение от ACCA (ok) on 29-Июн-11, 23:10 
>>>> Постановка однозначная, решений может быть дофига, но без цикла никак.
>>> Жаль, строковых функций приличных нет. Щас еще сед/авк колупаю.
>> Чем тогда тот же gpg -c --passphrase 'KEY' неполноценен?
> видимо, тем, что gpg не является компонентом /bin/sh

Угу. А sed/awk, значит, являются...

Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

23. "Как в /bin/sh красиво отксорить строку ключом? "  +/
Сообщение от DeadLoco (ok) on 30-Июн-11, 13:32 
> Угу. А sed/awk, значит, являются...

Ключевое слово, в данном конкретном случае - POSIX

И незачем нервничать. Я вот тоже не могу решить эту задачку, но не нервничаю же :)

Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру