Разница заключается в длине, которую они генерируют.
crc32 () дает 32-битный код
sha1 () дает 128-битный код
md5 () дает 160-битный код
это правильно?? или Есть ли еще различия между ними?
Каждый из них реализует другую криптографическую хеш-функцию, и каждая хеш-функция генерирует хэш-значение другого размера. Основное различие между тремя функциями, которые вы показали здесь, состоит в том, что sha1 и md5 на самом деле предназначены для криптографической защиты. crc32 (crc означает циклическую проверку избыточности ) функция не является криптофункцией и предназначена для генерации хэша, который будет использоваться для проверки целостности файла (в основном для определения того, был ли он поврежден во время загрузки).
Просто обратите внимание: не используйте md5 или sha1 для любой реальной работы криптографии (например, хеширование паролей). Они оба ужасно разбиты (просто спросите Evernote или любую другую компанию, сжигаемую при использовании этого старого алгоритма). Вместо этого используйте функцию php crypt () и используйте SHA-256 или SHA-512 (лучше 256) или blowfish. И всегда солей ваши хеши …
Я думаю, что не только length
отличается, но и они используют другой алгоритм для encrypt
данных.
Использование криптографии на PHP простое, но это не значит, что оно бесплатное. Во-первых, в зависимости от данных, которые вы шифруете, у вас могут быть причины хранить 32-битное значение в базе данных вместо 160-битного значения для сохранения в пространстве. Во-вторых, чем более безопасна криптография, тем больше времени вычисления для доставки хеш-значения. Сайт с большим объемом может значительно замедляться, если требуется частая генерация md5 ().
crc32 () НЕ предназначен для использования в криптографических целях. Его цель состоит в том, что он создает хэш очень быстро, поэтому вы хотите использовать его, когда это ваша главная задача – вы хотите получить полезный хеш сразу. По этой причине он используется в сетевом оборудовании.
md5 () и sha1 () являются криптографическим хешированием, то есть они намереваются иметь очень приятные свойства, например очень сложно найти сообщение, которое создает определенный хеш, только для хэш-значения. Однако sha1 более безопасен и более современен, чем md5. Фактически, использование md5 следует считать устаревшим, если вы заботитесь о безопасности.
Также помните о солевых хэшах паролей, объединяя что-то лишнее с ними или что-то называемое «радужным столом», которое является большим списком предварительно хешированных общих паролей, может использоваться для определения того, что хеш соответствует и взломает учетные записи пользователей.
crc32 генерирует «контрольную сумму crc32 для str как целое число». – предполагаемое использование – это быстро проверить целостность и широко использовать для обнаружения случайных изменений, таких как ошибки сетевой передачи.
Вам лучше читать документы php, которые охватывают примеры:
Почему обычные функции хэширования, такие как md5 () и sha1 (), непригодны для паролей? Алгоритмы хеширования, такие как MD5, SHA1 и SHA256, разработаны очень быстро и эффективно. Благодаря современным технологиям и компьютерному оборудованию стало тривиально «грубой силой» выхода этих алгоритмов, чтобы определить исходный вход.
md5
– 128 бит , sha1
– 160 бит . В вопросе это обратное.
Основное различие между md5
и sha1
заключается в том, что пример столкновения sha1
еще не найден. Т.е. если вы используете md5
для двух разных входов, можно получить тот же хеш; с sha1
это не так. Помимо этого, они реализуют разные алгоритмы, но, например, не подходят для хранения паролей, несмотря на то, что они обычно используются для этого.
Они называются хэш-функциями.
http://en.wikipedia.org/wiki/Hash_function – объясняет различные типы хэш-функций
Они работают по-разному внутренне.
Примечание. Не используйте crc32
для шифрования. Его использование для быстрого хеширования, оно не так безопасно, как sha1
или md5
.
Основное различие – это длина генерируемого хэша.
CRC32 is, evidently, 32 bits, sha1() returns a 128 bit value, and md5() returns a 160 bit value.
Важно избегать столкновений.