Spec-Zone.ru › Elisp

Контрольная сумма/Хеш

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API