С - Смекалочка
Oct. 16th, 2024 10:53 pmКогда ты не знаешь что такое XOR, но слышал, что такая функция есть для биг-инт:
1. преобразуешь массив байт в строку;
2. преобразуешь строку в биг-инт;
3-4. то же самое со вторым массивом;
5. применяешь функцию для ксорки к этим двум биг-инт;
6. результат преобразуешь в строку;
7. строку преобразуешь в массив;
8. Profit!
1. преобразуешь массив байт в строку;
2. преобразуешь строку в биг-инт;
3-4. то же самое со вторым массивом;
5. применяешь функцию для ксорки к этим двум биг-инт;
6. результат преобразуешь в строку;
7. строку преобразуешь в массив;
8. Profit!
no subject
Date: 2024-10-16 03:22 pm (UTC)no subject
Date: 2024-10-16 03:24 pm (UTC)no subject
Date: 2024-10-16 03:26 pm (UTC)no subject
Date: 2024-10-17 12:19 am (UTC)Криптографические библиотеки на C++ зачастую передают туда-сюда 256- и 512-битные числа в виде std::string, по 8 бит в символе. Выглядит слегка по-деревенски, зато не надо зависеть от какой-нибудь библиотеки, реализующий весь BigInt.
no subject
Date: 2024-10-17 03:25 am (UTC)Массивы можно перексорить напрямую без ничего. Без преобразований "массив-строка-бигинт-сторонняя либа-строка-массив".
no subject
Date: 2024-10-17 08:43 am (UTC)Так это смотря на каком процессоре. Например, во многих RISC чтобы "перексорить напрямую без ничего" надо же быть уверенным, что твои массивы выровняны по 32-бит в памяти, и что размер их кратен четырём байтам. Так что твой китаец, возможно, не так уж и неправ...
no subject
Date: 2024-10-17 08:53 am (UTC)no subject
Date: 2024-10-17 09:02 am (UTC)А у тебя ещё и массивы произвольного, возможно неравного размера? Как же ты хотел их "ксорить напрямую" тогда?
no subject
Date: 2024-10-17 09:06 am (UTC)no subject
Date: 2024-10-17 09:09 am (UTC)Я начал?
no subject
Date: 2024-10-17 12:09 pm (UTC)Это если ксорить 32-битными словами. А если ксорить по одному байту за раз, то не надо ничего выравнивать.
no subject
Date: 2024-10-17 03:00 pm (UTC)Вам очень непросто будет найти RISC ядро с байтовыми операциями ,) а большинство современных контроллеров (об одном из которых Майк и говорит, насколько я понело) относятся как раз к этой категории...
no subject
Date: 2024-10-17 03:12 pm (UTC)Поста бы не было, если бы ксорка не была примитивной операцией, которую можно применить прямо на массиве.
no subject
Date: 2024-10-17 04:05 pm (UTC)Для тебя просто, а человек, быть может, уже обжигался на чём-нить типа ARM Cortex, вот и делает пословно... а ты такой сразу: фу, кетайса!
no subject
Date: 2024-10-17 04:33 pm (UTC)no subject
Date: 2024-10-17 04:58 pm (UTC)Ну, его так научили, естественно. Почему его так научили, не знаю, но есть вот подозрение. Например, если написать типа
(char*)a[i] = (char*)b[i]^(char*)c[i]для чего-нибудь типа Am29k, то компилятор выдаст такой чудовищный фарш, что лучше уж эксплицитно преобразовать в 32 бита, наверное.no subject
Date: 2024-10-17 03:58 pm (UTC)Любой язык программирования выше ассемблера позволяет мне обращаться к любому байту из массива индивидуально и не думать о том, как там что выравнено в памяти. Сколько дополнительных операций для этого вставит компилятор для данного процессора мне всё равно. Я могу даже не знать, для какого процессора пишу.
Если не всё равно и производительность важна, тогда придётся думать. Но что-то я не могу себе представить приложение, которое упирается в скорость ксора.
no subject
Date: 2024-10-17 04:07 pm (UTC)Телеком.
no subject
Date: 2024-10-17 07:06 pm (UTC)В каком месте? Никто ж не делает шифрование ксором. Есть стандартные алгоритмы шифрования, реализованные в железе или библиотекой вроде NaCl или Crypto++, написанной и оптимизированной под конкретное железо.
no subject
Date: 2024-10-18 12:40 pm (UTC)Гм. Интересно, зачем бы тогда в nacl функция crypto_stream_xor()? Воообще-то, все делают шифрование именно ксором, без ксора можно сделать разве что режим ECB (в блочных шифрах), а он самый неустойчивый из возможных.
Потом мало ли, для обфускации, например, можно применить. Майк вот зачем-то же его делает? ,)
И кстати, "оптимизирована под конкретное железо" это наверное libsodium, а не nacl? Или я отстал от жизни? Раньше "солянка" была оптимизирована только под x86.
no subject
Date: 2024-10-18 02:05 pm (UTC)А откуда вы возьмете параметр k (с чем ксорить)? Его обычно генерируют блочным шифром вроде AES или Salsa20. Большая часть времени уходит именно на блочный шифр, а не на ксор.
Могут быть и другие применения, например, для коррекции ошибок. Но и там вряд ли можно упереться в скорость ксора, наверняка есть намного более долгие операции.
no subject
Date: 2024-10-18 02:44 pm (UTC)That's true, но из того, что есть более затратные операции, не следует же, что надо (или хотя бы допустимо) замедлять менее затратные? Латенси такая штука, тут миллисекунда, там миллисекунда, а задержка всё накапливается..
no subject
Date: 2024-10-18 03:08 pm (UTC)Речь не про замедлять специально. Речь про то, на ускорение чего тратить время дорогостоящих профессионалов. Если можно быстро и дёшево сделать что-то, работающее миллисекунду или дорого и медленно сделать что-то, работающее 100 микросекунд, то вряд ли есть смысл связываться. Человек не может отличить миллисекунды от микросекунд.
no subject
Date: 2024-10-18 03:32 pm (UTC)Да, но задержки (например, в канале) накапливаются. А впрочем, ладно, делайте как хотите ,))
no subject
Date: 2024-10-18 02:55 pm (UTC)no subject
Date: 2024-10-18 03:36 pm (UTC)Фырк! =)
no subject
Date: 2024-10-19 02:38 am (UTC)no subject
Date: 2024-10-21 04:21 pm (UTC)Да я, вообще-то, сразу поверил. Ничего невероятного по современным меркам в таком способе включения лампочек нет...
Слушай, а заради совместимости с чем именно тебе такие наказания?
no subject
Date: 2024-10-21 07:05 pm (UTC)no subject
Date: 2024-10-22 07:25 am (UTC)Где "там"?
А вообще-то, разве нельзя взять OpenSSL, и не мучиться с кетайским погромизмом?
no subject
Date: 2024-10-17 05:24 pm (UTC)no subject
Date: 2024-10-17 07:25 pm (UTC)Я думаю что как раз сложные вещи пишутся лучше, потому что их пишут нормальные программисты, а не копипастеры со StackOverflow/Copilot/ChatGPT. Если через колено написать что-нибудь критически важное, оно ж не взлетит.
Телефонию удерживает обратная совместимость. Отсюда и оцифровка на восьми килогерцах и восьми битах. FaceTime, WhatsApp и даже Signal передают уже не только звук нормального качества, но и видео тоже.
no subject
Date: 2024-10-19 09:44 am (UTC)no subject
Date: 2024-10-19 06:40 pm (UTC)Тогда использовали старые кодеки, и тоже для обратной совместимости. Например, на слух было невозможно отличить звуки "с" и "ф". Сейчас уже можно.