Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » CRC со своим полиномом в PHP

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

iToshka

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ранее не делал проверку CRC в PHP. Но появилась задача проверять по CRC являются ли полученные данные (шестнадцатеричная строка) корректными.
 
Заданный полином: 58e24f9a4bb (43-х битный).
 
Это случайно не полином некого готового алгоритма?
Как можно написать код на PHP для своей функции CRC, где будет указан свой полином, куда добавлять нули и прочии постоянные?

Всего записей: 4 | Зарегистр. 27-02-2010 | Отправлено: 22:52 20-02-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iToshka

Цитата:
Как можно написать код на PHP для своей функции CRC, где будет указан свой полином, куда добавлять нули и прочии постоянные

так же, как и в любом другом языке. вопрос непонятен.
возьмите алгоритм вычисления чего угодно и переведите его на язык PHP
ну вот, как примеру.. Помогите разобраться в чём суть защиты с этим javascript-ом
 

Цитата:
Заданный полином: 58e24f9a4bb (43-х битный).  

результат вычисления контрольной суммы? откуда там 43 бита то? 4 * 11 = 44 бита

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:58 20-02-2014 | Исправлено: Cheery, 22:59 20-02-2014
iToshka

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
так же, как и в любом другом языке. вопрос непонятен.

Хотелось бы более-менее готовый РНР код, чтобы можно было либо немного модифицировать его, либо универсальный код. Как например для заархивирования пачки файлов можно нагуглить готовый код. Почему спрашиваю, потому что механизм CRC непростой - побитовое деление, а я вообще не пойму как мне это просто сделать, примеры кодов находил, но не уверен что подходит, вроде как в цикле делим и делим, получаем остаток, да тонкостей много, будет ошибка - будет неправильно...
 

Цитата:
результат вычисления контрольной суммы? откуда там 43 бита то? 4 * 11 = 44 бита

Верное замечание. У меня полином записан в виде единиц и нулей, их там 43, я просто перевел в HEX, отсюда взялся лишний бит.

Всего записей: 4 | Зарегистр. 27-02-2010 | Отправлено: 23:19 20-02-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iToshka

Цитата:
Почему спрашиваю, потому что механизм CRC непростой - побитовое деление,

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

Цитата:
9 bits (CRC-8)
17 bits (CRC-16)
33 bits (CRC-32)
65 bits (CRC-64)

 

Цитата:
 а я вообще не пойму как мне это просто сделать

что именно вы не поймете? все побитовые операции есть и в php
http://www.php.net/manual/en/language.operators.bitwise.php
 

Цитата:
будет ошибка - будет неправильно

ну так редко получается с первого раза.. надо стараться.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:25 20-02-2014 | Исправлено: Cheery, 23:27 20-02-2014
iToshka

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Тогда уточню вопрос. Ищу готовый скрипт, который позволит выполнить вычисление остатка от деления одной строки данных в двоичном виде на полином (43 бита). Или хотя бы подсказку что писать в цикле, насколько я понимаю:
 

Код:
 
  for ($i=0; $i<43; $i++)
  {
 $ostatok = $data / $poly;
  }
 

 
Но наверняка это не побитовое. Инструкцию http://www.php.net/manual/en/language.operators.bitwise.php читал, слово "деление" там встречается лишь раз Поэтому и не понимаю как делить.

Всего записей: 4 | Зарегистр. 27-02-2010 | Отправлено: 00:36 21-02-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iToshka

Цитата:
который позволит выполнить вычисление остатка от деления одной строки данных в двоичном виде на полином

вы где то видели этот алгоритм? не на PHP, а вообще?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 00:40 21-02-2014
iToshka

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да, видел, только я не понимаю как они делят бинарные данные, и что за пробелы появляются слева. Вот примеры:
http://stackoverflow.com/questions/4990156/crc-calculation-by-example/
http://stackoverflow.com/questions/15602270/need-help-in-crc-calculation - вроде тот, что надо код на JS, да автор пишет, что код с ошибками.

Всего записей: 4 | Зарегистр. 27-02-2010 | Отправлено: 01:11 21-02-2014 | Исправлено: iToshka, 01:11 21-02-2014
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
iToshka
ну.. вы можете реализовать это либо работая с битами.. либо, если установлен модуль, можете просто использовать десятичную форму (это же просто деление) и модуль для вычислений с произвольной точностью.
http://www.php.net/manual/en/book.bc.php

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:12 21-02-2014
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » CRC со своим полиномом в PHP


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru