Оцените, пойдёт так. На входе бинарная строка в 15 символов, надо подсчитать её контрольную сумму (простое сложение). Код (Text): <?php function getCRC($str) { $ar = str_split($str); $ord = array_map('ord', $ar); $sum = array_sum($ord); // простое суммирование данных $crc = $sum & 0xFF; // может получится больше 255 (1 байта), отсекаем лишнее return chr($crc); }
Проще, может и да, но вот надежнее - нет. Контрольная сумма должна обеспечить проверку целостности данных и их как можно более однозначной интерпретации. Т.о. обрезать КС до одного байта, при их количестве больше 1, по крайней мере, неэффективно. Для CRC32 сейчас навскидку не скажу, а для варианта ТС, попробуйте сравнить контрольные суммы двухбайтовых последовательностей: CD и 64 58 и D9 B2 и 7F, вычисленные вашим алгоритмом. Как понять какую из них описывает ваша контрольная сумма? Как контролировать?
никак. но может быть достаточно. мы же не знаем, что он пытается законтролить. может этого решения будет достаточно.
Я думаю, что это не готовый алгоритм, а только идея автора. Потому я и писал, что проще воспользоваться готовой хэш-функцией, которая дает аналогичный результат и тратит меньше ресурсов. Кроме того, алгоритм автора абсолютно не надежен в плане криптостойкости, в отличии от стандартных хэш-функций.
Я ни в коей мере не утверждаю, что CRC32 - отстой, а алгоритм, предложенный ТС - фигня. Каждая идея имеет право на жизнь и на реализацию. Только применимость того или иного подхода для той или иной задачи очень разная. Я просто попытался показать ТС, что контрольная сумма ради контрольной суммы не даст никаких преимуществ. В ней должен быть смысл. Судя по задаче описанной в первом посте, ТС обменивается какими-то данными, более критичными, чем строка "Hello world", в которой можно допустить strlen()/2 ошибок и получатель поймет, что это. В случае с "бинарной" строкой, похоже, надо проверить не изменилась ли она в процессе передачи волею судеб или злоумышленника. Хотя это все досужие домыслы. Может ТС внесет, все же, ясность зачем ему нужна контрольная сумма? Тогда можно будет плясать "от задачи".
о, оказывается я не один начинаю с вопроса "анахуа?" а то малышня вечно обижается на такие вопросы, мол начерта вам знать зачем, лучше подскажите как сделать ох уж эта малышня
igordata. Раз уж ты заговорил о себе, то справедливо будет заметить, что в большинстве твоих постов ты даже не стремишься высказаться по существу вопроса, а пытаешься так или иначе апкакать тех, кто этот вопрос обсуждает. И так в среднем по 12 постов в день. Откуда такая преданность делу...