michaelkoloboff: (Default)
[personal profile] michaelkoloboff
Когда ты не знаешь что такое XOR, но слышал, что такая функция есть для биг-инт:
1. преобразуешь массив байт в строку;
2. преобразуешь строку в биг-инт;
3-4. то же самое со вторым массивом;
5. применяешь функцию для ксорки к этим двум биг-инт;
6. результат преобразуешь в строку;
7. строку преобразуешь в массив;
8. Profit!

Date: 2024-10-16 03:22 pm (UTC)
vit_r: default (Default)
From: [personal profile] vit_r
Китайцы?

Date: 2024-10-16 03:26 pm (UTC)
vit_r: default (Default)
From: [personal profile] vit_r
Я видел!

Date: 2024-10-17 12:19 am (UTC)
sobriquet9: (Default)
From: [personal profile] sobriquet9

Криптографические библиотеки на C++ зачастую передают туда-сюда 256- и 512-битные числа в виде std::string, по 8 бит в символе. Выглядит слегка по-деревенски, зато не надо зависеть от какой-нибудь библиотеки, реализующий весь BigInt.

Date: 2024-10-17 08:43 am (UTC)
wererat: (Default)
From: [personal profile] wererat

Так это смотря на каком процессоре. Например, во многих RISC чтобы "перексорить напрямую без ничего" надо же быть уверенным, что твои массивы выровняны по 32-бит в памяти, и что размер их кратен четырём байтам. Так что твой китаец, возможно, не так уж и неправ...

Date: 2024-10-17 09:02 am (UTC)
wererat: (Default)
From: [personal profile] wererat

А у тебя ещё и массивы произвольного, возможно неравного размера? Как же ты хотел их "ксорить напрямую" тогда?

Date: 2024-10-17 09:09 am (UTC)
wererat: (Default)
From: [personal profile] wererat

Я начал?

А строки не должны быть равной длины? Перевод в строки и потом в биг-инт не избавляет от необходимости проверок.

Date: 2024-10-17 12:09 pm (UTC)
sobriquet9: (Default)
From: [personal profile] sobriquet9

Это если ксорить 32-битными словами. А если ксорить по одному байту за раз, то не надо ничего выравнивать.

Date: 2024-10-17 03:00 pm (UTC)
wererat: (Default)
From: [personal profile] wererat

Так это смотря на каком процессоре.

Вам очень непросто будет найти RISC ядро с байтовыми операциями ,) а большинство современных контроллеров (об одном из которых Майк и говорит, насколько я понело) относятся как раз к этой категории...

Date: 2024-10-17 04:05 pm (UTC)
wererat: (Default)
From: [personal profile] wererat

Для тебя просто, а человек, быть может, уже обжигался на чём-нить типа ARM Cortex, вот и делает пословно... а ты такой сразу: фу, кетайса!

Date: 2024-10-17 04:58 pm (UTC)
wererat: (Default)
From: [personal profile] wererat

Ну, его так научили, естественно. Почему его так научили, не знаю, но есть вот подозрение. Например, если написать типа (char*)a[i] = (char*)b[i]^(char*)c[i] для чего-нибудь типа Am29k, то компилятор выдаст такой чудовищный фарш, что лучше уж эксплицитно преобразовать в 32 бита, наверное.

Date: 2024-10-17 03:58 pm (UTC)
sobriquet9: (Default)
From: [personal profile] sobriquet9

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

Если не всё равно и производительность важна, тогда придётся думать. Но что-то я не могу себе представить приложение, которое упирается в скорость ксора.

Date: 2024-10-17 04:07 pm (UTC)
wererat: (Default)
From: [personal profile] wererat

Телеком.

Date: 2024-10-17 07:06 pm (UTC)
sobriquet9: (Default)
From: [personal profile] sobriquet9

В каком месте? Никто ж не делает шифрование ксором. Есть стандартные алгоритмы шифрования, реализованные в железе или библиотекой вроде NaCl или Crypto++, написанной и оптимизированной под конкретное железо.

Date: 2024-10-18 12:40 pm (UTC)
wererat: (Default)
From: [personal profile] wererat

Гм. Интересно, зачем бы тогда в nacl функция crypto_stream_xor()? Воообще-то, все делают шифрование именно ксором, без ксора можно сделать разве что режим ECB (в блочных шифрах), а он самый неустойчивый из возможных.

Потом мало ли, для обфускации, например, можно применить. Майк вот зачем-то же его делает? ,)

И кстати, "оптимизирована под конкретное железо" это наверное libsodium, а не nacl? Или я отстал от жизни? Раньше "солянка" была оптимизирована только под x86.

Date: 2024-10-18 02:05 pm (UTC)
sobriquet9: (Default)
From: [personal profile] sobriquet9

А откуда вы возьмете параметр k (с чем ксорить)? Его обычно генерируют блочным шифром вроде AES или Salsa20. Большая часть времени уходит именно на блочный шифр, а не на ксор.

Могут быть и другие применения, например, для коррекции ошибок. Но и там вряд ли можно упереться в скорость ксора, наверняка есть намного более долгие операции.

Date: 2024-10-18 02:44 pm (UTC)
wererat: a furry fox-girl bw ink portrait in winter cloak, blackened (foxy #3)
From: [personal profile] wererat

That's true, но из того, что есть более затратные операции, не следует же, что надо (или хотя бы допустимо) замедлять менее затратные? Латенси такая штука, тут миллисекунда, там миллисекунда, а задержка всё накапливается..

Date: 2024-10-18 03:08 pm (UTC)
sobriquet9: (Default)
From: [personal profile] sobriquet9

Речь не про замедлять специально. Речь про то, на ускорение чего тратить время дорогостоящих профессионалов. Если можно быстро и дёшево сделать что-то, работающее миллисекунду или дорого и медленно сделать что-то, работающее 100 микросекунд, то вряд ли есть смысл связываться. Человек не может отличить миллисекунды от микросекунд.

Date: 2024-10-18 03:32 pm (UTC)
wererat: (Default)
From: [personal profile] wererat

Да, но задержки (например, в канале) накапливаются. А впрочем, ладно, делайте как хотите ,))

Date: 2024-10-18 03:36 pm (UTC)
wererat: (Default)
From: [personal profile] wererat

Фырк! =)

Date: 2024-10-21 04:21 pm (UTC)
wererat: (Default)
From: [personal profile] wererat

Да я, вообще-то, сразу поверил. Ничего невероятного по современным меркам в таком способе включения лампочек нет...

Слушай, а заради совместимости с чем именно тебе такие наказания?

Date: 2024-10-22 07:25 am (UTC)
wererat: (Default)
From: [personal profile] wererat

Где "там"?

А вообще-то, разве нельзя взять OpenSSL, и не мучиться с кетайским погромизмом?

Date: 2024-10-17 07:25 pm (UTC)
sobriquet9: (Default)
From: [personal profile] sobriquet9

Я думаю что как раз сложные вещи пишутся лучше, потому что их пишут нормальные программисты, а не копипастеры со StackOverflow/Copilot/ChatGPT. Если через колено написать что-нибудь критически важное, оно ж не взлетит.

Телефонию удерживает обратная совместимость. Отсюда и оцифровка на восьми килогерцах и восьми битах. FaceTime, WhatsApp и даже Signal передают уже не только звук нормального качества, но и видео тоже.

Date: 2024-10-19 09:44 am (UTC)
From: [personal profile] anonim_legion
Когда я вместо домашнего телефона начал беседовать по мобильному, в 2005 году где-то, меня поразило плохое качество звука.

Date: 2024-10-19 06:40 pm (UTC)
sobriquet9: (Default)
From: [personal profile] sobriquet9

Тогда использовали старые кодеки, и тоже для обратной совместимости. Например, на слух было невозможно отличить звуки "с" и "ф". Сейчас уже можно.

Profile

michaelkoloboff: (Default)
michaelkoloboff

January 2026

S M T W T F S
    12 3
4 56 78910
11121314151617
18192021222324
25262728293031

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 9th, 2026 03:31 pm
Powered by Dreamwidth Studios