![]() |
![]() |
![]() |
|
XOR для двух строк | ☑ | ||
---|---|---|---|---|
0
Alex_MA
21.09.11
✎
15:28
|
Всем доброго дня!
Есть две строки полученные в результате хеш ф-ии MD5: Строка1 = "32a17408d6eb3e25c6c3c00351a9128f"; Строка2 = "827ccb0eea8a706c4c34a16891f84e7b"; каждый символ строки - шеснадцатиричное число, необходимо получить Строка3 = Строка1 XOR Строка2; Как бы такое реализовать ? Подскажите пожалуйста. Спасибо за внимание, за советы и ответы премного благодарен. |
|||
1
Fragster
гуру
21.09.11
✎
15:29
|
1000 рублей
|
|||
2
andrewks
21.09.11
✎
15:32
|
(0) в курсе, что xor - это не шифрование, а баловство?
|
|||
3
aleks-id
21.09.11
✎
15:34
|
(2) xor вкупе с shl/shr очень даже ничаго...
|
|||
4
Alex_MA
21.09.11
✎
15:35
|
(2) в курсе
|
|||
5
Alex_MA
21.09.11
✎
15:38
|
(2)я думаю как это лучше сделать ?
каждый символ - это набор байтов, т.е. если по такому алгоритму, то тогда Строка1 = "01000110 010001100..." Строка2 - аналогично и дальше уже к битам применять XOR ? |
|||
6
proger2011
21.09.11
✎
15:38
|
(0) А в чём собственно проблема? Представить это всё в двоичном виде? Или применить попозиционно xor?
|
|||
7
Alex_MA
21.09.11
✎
15:40
|
получим Строка3 = "тоже набор бит". А если Строка3 сконвертировать в символы, не получится ли "абры-кодабры" (символ перевода строки, или еще какие нибудь "страшные" символы)?
|
|||
8
Alex_MA
21.09.11
✎
15:40
|
(6) как в (5) ?
|
|||
9
andrewks
21.09.11
✎
15:41
|
(7) чо? _heximal_!!!
|
|||
10
Steel_Wheel
21.09.11
✎
15:41
|
(7) В целом неважно, т.к. строка всего лишь не будет отображаться в текстовых редакторах
|
|||
11
sda553
21.09.11
✎
15:43
|
Вначале в цикле составить в памяти таблицу 16х16 всех xorов для пары чисел от 0 до f
потом обходим по символам строку и из таблицы получаем результат в результирующую строку |
|||
12
proger2011
21.09.11
✎
15:44
|
(7) Ну попробуй хоть один придумай страшный символ
|
|||
13
Alex_MA
21.09.11
✎
15:46
|
(11)поподробней можно, близко к истине
|
|||
14
andrewks
21.09.11
✎
15:49
|
охренеть..
а не проще ли в jscript несколько строчек накидать? |
|||
15
Alex_MA
21.09.11
✎
15:51
|
(14)нужно в 1С
|
|||
16
andrewks
21.09.11
✎
15:52
|
(15) на сервере под линем?
|
|||
17
Alex_MA
21.09.11
✎
15:55
|
(16)не под линем :)
|
|||
18
proger2011
21.09.11
✎
15:56
|
(11) Какие таблицы... Ну может с ними быстрее или чё нить ещё. Я бы просто сделал для каждого i-го символа
Рез=(стр1[i]="0" И стр2[i]="1") Или (стр1[i]="1" И стр2[i]="0"); |
|||
19
sda553
21.09.11
✎
15:58
|
СтрокаВсехСимв = "0123456789abcdef"
ТаблицаКсоров = Новый соответствие; Для x =0 по 16 Цикл Для y=0 по 16 Цикл ЛевыйОперанд = Сред(СтрокаВсехСимв,x+1,1); ПравыйОперанд = Сред(СтрокаВсехСимв,y+1,1); Результат = МойКсор(ЛевыйОперанд,ПравыйОперанд); ТекСоответствие = ТаблицаКсоров[ЛевыйОперанд]; Если ТекСоответствие =Неопределено Тогда ТекСоответствие = Новый Соответствие; КонецЕсли; ТекСоответствие.Вставить(ПравыйОперанд, Результат); ТаблицаКсоров.Вставить(ЛевыйОперанд, ТекСоответствие); КонецЦикла; КонецЦикла; //Составляем результат хэша для строки Строка3=""; Для зы=1 По СтрДлина(Строка1) Цикл Строка3 = Строка3+ТаблицаКсоров[Сред(Строка1,зы,1)][Сред(Строка1,зы,1)]; КонецЦикла; //результат в строка3 |
|||
20
sda553
21.09.11
✎
15:59
|
(19) а...как обычно там ошибки мелкие, но суть понятна
Строка3=""; Для зы=1 По СтрДлина(Строка1) Цикл Строка3 = Строка3+ТаблицаКсоров[Сред(Строка1,зы,1)][Сред(Строка2,зы,1)]; КонецЦикла; //результат в строка3 |
|||
21
proger2011
21.09.11
✎
16:01
|
(19) Да так лучше конечно...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |