Контрольная сумма/Хеш
Emacs имеет встроенную поддержку вычисления криптографических хешей. Криптографический хеш, или контрольная сумма, представляет собой цифровую «отпечатку» данных (например, блока текста), которую можно использовать для проверки того, что у вас есть неизменная копия этих данных.
Emacs поддерживает несколько распространённых алгоритмов криптографических хешей: MD5, SHA-1, SHA-2, SHA-224, SHA-256, SHA-384 и SHA-512. MD5 — один из старейших алгоритмов, который часто используется в хеш-суммам сообщений для проверки целостности сообщений, передаваемых по сети. MD5 и SHA-1 не являются устойчивыми к коллизиям (т.е., возможно сознательно создать разные наборы данных, имеющие один и тот же хеш MD5 или SHA-1), поэтому их не следует использовать для задач, связанных с безопасностью. Для задач, связанных с безопасностью, следует использовать другие типы хешей, такие как SHA-2 (например, sha256 или sha512).
- Функция: secure-hash-algorithms
Эта функция возвращает список символов, представляющих алгоритмы, которые
secure-hashможет использовать.
- Функция: secure-hash объект алгоритма &optional start end binary
-
Эта функция возвращает хеш для объекта. Аргумент алгоритм — символ, указывающий, какой хеш вычислить: один из
md5,sha1,sha224,sha256,sha384илиsha512. Аргумент объект должен быть буфером или строкой.Необязательные аргументы start и end — позиции символов, определяющие часть объекта, для которой нужно вычислить хеш-сумму сообщения. Если они
nilили опущены, хеш вычисляется для всего объекта.Если аргумент binary опущен или
nil, функция возвращает текстовую форму хеша как обычную строку Lisp. Если binary неnil, она возвращает хеш в бинарной форме, как последовательность байтов, хранящихся в строке unibyte.Эта функция не вычисляет хеш непосредственно из внутреннего представления текста объекта (см. Представления текста). Вместо этого она кодирует текст с помощью системы кодирования (см. Системы кодирования) и вычисляет хеш из этого закодированного текста. Если объект является буфером, используемая система кодирования — та, которая будет выбрана по умолчанию для записи текста в файл. Если объект — строка, используется предпочтительная система кодирования пользователя (см. Распознавание кодирования в Справочнике GNU Emacs).
- Функция: md5 объект &optional start end coding-system noerror
-
Эта функция возвращает хеш MD5. Она частично устарела, поскольку для большинства целей она эквивалентна вызову
secure-hashсmd5в качестве аргумента алгоритм. Аргументы объект, start и end имеют то же значение, что и вsecure-hash.Если coding-system не
nil, она определяет систему кодирования, используемую для кодирования текста; если опущена илиnil, используется систем кодирования по умолчанию, как вsecure-hash.Обычно
md5сигнализирует об ошибке, если текст не может быть закодирован с использованием указанной или выбранной системы кодирования. Однако, если noerror неnil, она молча использует кодировкуraw-textвместо этого.
- Функция: buffer-hash &optional buffer-or-name
Возвращает хеш buffer-or-name. Если
nil, по умолчанию используется текущий буфер. В отличие отsecure-hash, эта функция вычисляет хеш на основе внутреннего представления буфера, игнорируя любые системы кодирования. Поэтому она полезна только для сравнения двух буферов, работающих в одном Emacs, и не гарантирует возвращение одинакового хеша между различными версиями Emacs. Она должна быть несколько эффективнее для больших буферов, чемsecure-hash, и не должна выделять больше памяти.
Copyright © 1990-1996, 1998-2022 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Checksum_002fHash.html