Контрольная сумма/хеш
Emacs имеет встроенную поддержку вычисления криптографических хешей. Криптографический хеш, или контрольная сумма, — это цифровой отпечаток фрагмента данных (например, блока текста), который можно использовать, чтобы проверить, что у вас есть неизменённая копия этих данных.
Emacs поддерживает несколько распространённых алгоритмов криптографического хеширования: MD5, SHA-1, SHA-2, SHA-224, SHA-256, SHA-384, SHA-512, SHA3-224, SHA3-256, SHA3-384 и SHA3-512. MD5 — самый старый из этих алгоритмов, его часто используют для создания дайджестов сообщений, чтобы проверять целостность сообщений, передаваемых по сети. MD5 и SHA-1 не устойчивы к коллизиям (то есть можно намеренно создать разные фрагменты данных с одинаковым хешем MD5 или SHA-1), поэтому не следует использовать их для задач, связанных с безопасностью. Для приложений, связанных с безопасностью, следует использовать другие типы хешей, например SHA-2 (например, sha256 или sha512) или SHA-3 (например, sha3-256 или sha3-512).
- Функция: secure-hash-algorithms
Эта функция возвращает список символов, представляющих алгоритмы, которые может использовать
secure-hash.
- Функция: secure-hash algorithm object &optional start end binary
-
Эта функция возвращает хеш для object. Аргумент algorithm — это символ, указывающий, какой хеш вычислить: один из
md5,sha1,sha224,sha256,sha384,sha512,sha3-224,sha3-256,sha3-384илиsha3-512. Аргумент object должен быть буфером или строкой.Необязательные аргументы start и end — это позиции символов, задающие часть object, для которой нужно вычислить дайджест сообщения. Если они равны
nilили не указаны, хеш вычисляется для всего object.Если аргумент binary не указан или равен
nil, функция возвращает текстовое представление хеша в виде обычной строки Lisp. Если binary не равенnil, функция возвращает хеш в двоичном представлении — как последовательность байтов, хранящихся в однобайтной строке. Длина возвращаемой строки зависит от algorithm:- Для
md5: 32 символа (16 байт, если binary не равенnil). - Для
sha1: 40 символов (20 байт, если binary не равенnil). - Для
sha224: 56 символов (28 байт, если binary не равенnil). - Для
sha256: 64 символа (32 байта, если binary не равенnil). - Для
sha384: 96 символов (48 байт, если binary не равенnil). - Для
sha512: 128 символов (64 байта, если binary не равенnil). - Для
sha3-224: 56 символов (28 байт, если binary не равенnil). - Для
sha3-256: 64 символа (32 байта, если binary не равенnil). - Для
sha3-384: 96 символов (48 байт, если binary не равенnil). - Для
sha3-512: 128 символов (64 байта, если binary не равенnil).
Эта функция не вычисляет хеш непосредственно по внутреннему представлению текста в object (см. раздел Представления текста). Вместо этого она кодирует текст с помощью кодировки (см. раздел Системы кодирования) и вычисляет хеш по закодированному тексту. Если object — буфер, используется кодировка, которая была бы выбрана по умолчанию для записи текста этого буфера в файл. Если object — строка, используется предпочитаемая пользователем кодировка (см. раздел Распознавание кодировки в Руководстве GNU Emacs).
- Для
- Функция: md5 object &optional start end coding-system noerror
-
Эта функция возвращает хеш MD5. Она в значительной мере устарела, поскольку для большинства задач эквивалентна вызову
secure-hashсmd5в качестве аргумента algorithm. Аргументы object, start и end имеют то же значение, что и вsecure-hash. Функция возвращает строку длиной 32 символа.Если 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, и не должна выделять дополнительную память.
- Функция: sha1 object &optional start end binary
-
Эта функция эквивалентна вызову
secure-hashследующим образом:(secure-hash 'sha1 object start end binary)
Если binary равен
nil, функция возвращает строку длиной 40 символов, в противном случае — однобайтную строку длиной 20 байт.
Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Checksum_002fHash.html