2016-10-12 21 views
0

Я хотел бы отправить некоторые данные на устройство, и мне нужно проверить согласованность. Нападающего не будет, могут быть только аппаратные сбои.Есть ли «безопасное» количество данных для хэша?

Размер данных Maximum в моем случае будет около 256kB.

Я заинтересован в небольших алгоритмах следа и небольшом размере хэша. Можно использовать что-то вроде CRC8, CRC16, CRC32, но также MD5 или SHA1. Хеши SHA2 для меня настолько велики.

Есть ли общее правило для практического ограничения размера данных?

ответ

0

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

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

+0

У меня нет цифр. Я могу просто сказать, что аппаратная ошибка очень маловероятна. Это может быть просто перевернуто, но в некоторых редких случаях это может быть полный мусор. Я не знал xxhash, это звучит любопытно. – j123b567

+0

xxHash, вы указали мне на инструмент [SMHasher] (https://github.com/aappleby/smhasher), который является чем-то необходимым. – j123b567

0

Нет. Шаш 1-го шара для всех целей и целей глобально уникален, и алгоритм не разбивается на очень большие входы. Если вы измените один бит, хэш должен измениться.

+0

Я имею в виду что-то вроде «проблемы с днем ​​рождения», поэтому обрабатывать 257 разных файлов с помощью CRC8, существует вероятность 100%, что будут два из них с одним CRC. С другой стороны, криптографические хэши настолько медленны и имеют такие большие хэши (20 байт для sha1). Поэтому мне нужно какое-то золотое серебро. – j123b567

+0

Я думаю, что неважно, насколько силен алгоритм. Когда строка сообщения (или данных) длиннее строки проверки ошибок, то, как вы правильно отметили, будут случаи дублирования сопоставления строк сообщений в строке проверки ошибок. – ysap