src/checksums/sha2
SHA-2 (Secure Hash Algorithm 2) — это криптографическая хеш-функция, которая принимает входные данные и генерирует значение, известное как дайджест сообщения.
Она предоставляет алгоритмы фиксированного размера, которые генерируют дайджест сообщения определённого размера за один проход.
Реализованные алгоритмы
Функции фиксированного размера:
- SHA-224
- SHA-256
- SHA-384
- SHA-512
Для удобства этот модуль предоставляет функции с проверкой типа длины вывода для реализованных функций фиксированного размера через initSha_224, initSha_256, initSha_384 и initSha_512. Эти функции предоставляют digest перегрузку, возвращающую массив дайджеста сообщения правильного размера.
Если требуются более гибкие типы, можно использовать «непроверенную» Sha2State, но следует позаботиться о том, чтобы предоставить digest массив dest правильного размера.
Пример:
import src/checksums/sha2
var hasher = initSha_256()
hasher.update("The quick brown fox ")
hasher.update("jumps over the lazy dog")
let digest = hasher.digest()
assert $digest == "d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592" Пример:
import src/checksums/sha2
var hasher = initSha_384()
hasher.update("The quick brown fox ")
hasher.update("jumps over the lazy dog")
let digest = hasher.digest()
assert $digest == "ca737f1014a48f4c0b6dd43cb177b0afd9e5169367544c494011e3317dbf9a509cb1e5dc1e85a941bbee3d7f2afbc9b1" Импорты
- sha_utils
Типы
ShaDigest_224 = array[28, char]
- Дайджест вывода SHA-224.
ShaDigest_256 = array[32, char]
- Дайджест вывода SHA-256.
ShaDigest_384 = array[48, char]
- Дайджест вывода SHA-384.
ShaDigest_512 = array[64, char]
- Дайджест вывода SHA-512.
ShaInstance = enum Sha_224, ## SHA-224 with an output size of 28 bytes (truncated from SHA-256) Sha_256, ## SHA-256 with an output size of 32 bytes Sha_384, ## SHA-384 with an output size of 48 bytes (truncated from SHA-512) Sha_512 ## SHA-512 with an output size of 64 bytes
- Выбирает определённую инстанцию SHA с известными длинами и свойствами дайджеста сообщений.
ShaState = distinct ShaContext
-
Непроверенное состояние SHA, созданное из конкретной
ShaInstance.Непроверенное означает, что пользователь должен убедиться, что целевой буфер имеет достаточно места для хранения результирующего дайджеста, иначе
digestобрубит вывод. ShaStateStatic[instance] = distinct ShaState
- Статически проверенное состояние SHA, созданное из конкретной
ShaInstance.
Процедуры
proc digest(state: var ShaState; dest: var openArray[char]): int {....raises: [], tags: [], forbids: [].}-
Завершает, сохраняет завершенный дайджест сообщения в
destи возвращает количество записанных байтов вdest.Если
destнедостаточно велик для хранения дайджеста, созданного выбранной инстанцией, всё, что выходит за пределы, будет усечено. proc digest(state: var ShaStateStatic[Sha_224]): ShaDigest_224 {....raises: [], tags: [], forbids: [].}- Завершает и возвращает завершенный дайджест сообщения SHA-224.
proc digest(state: var ShaStateStatic[Sha_256]): ShaDigest_256 {....raises: [], tags: [], forbids: [].}- Завершает и возвращает завершенный дайджест сообщения SHA-256.
proc digest(state: var ShaStateStatic[Sha_384]): ShaDigest_384 {....raises: [], tags: [], forbids: [].}- Завершает и возвращает завершенный дайджест сообщения SHA-284.
proc digest(state: var ShaStateStatic[Sha_512]): ShaDigest_512 {....raises: [], tags: [], forbids: [].}- Завершает и возвращает завершенный дайджест сообщения SHA-512.
func digestLength(instance: ShaInstance): int {....raises: [], tags: [], forbids: [].}- Возвращает размер дайджеста сообщения для выбранной инстанции SHA.
func initSha(instance: ShaInstance): ShaState {....raises: [], tags: [], forbids: [].}- Создаёт новое непроверенное состояние SHA для выбранной инстанции
instance. func initSha_224(): ShaStateStatic[Sha_224] {....raises: [], tags: [], forbids: [].}- Создаёт новое статически проверенное состояние для инстанции SHA-224.
func initSha_256(): ShaStateStatic[Sha_256] {....raises: [], tags: [], forbids: [].}- Создаёт новое статически проверенное состояние для инстанции SHA-256.
func initSha_384(): ShaStateStatic[Sha_384] {....raises: [], tags: [], forbids: [].}- Создаёт новое статически проверенное состояние для инстанции SHA-384.
func initSha_512(): ShaStateStatic[Sha_512] {....raises: [], tags: [], forbids: [].}- Создаёт новое статически проверенное состояние для инстанции SHA-512.
func initShaStateStatic(instance: static ShaInstance): ShaStateStatic[instance]
- Создаёт новое статически проверенное состояние SHA для выбранной инстанции
instance. proc secureHash(instance: ShaInstance; data: openArray[char]): seq[char] {. ...raises: [], tags: [], forbids: [].}- Обёртка для стандартной последовательности «инициализация, обновление, дайджест» с инстанцией SHA, выбранной во время выполнения.
proc secureHash(instance: static ShaInstance; data: openArray[char]): auto
- Обёртка для стандартной последовательности «инициализация, обновление, дайджест» со статически выбранной инстанцией SHA.
proc update(state: var ShaState; data: openArray[char]) {.borrow, ...raises: [], tags: [], forbids: [].}- Обновляет данное
ShaStateс предоставленным буферомdata. proc update[instance: static ShaInstance](state: var ShaStateStatic[instance]; data: openArray[char])- Обновляет данное
ShaStateStaticс предоставленным буферомdata.
© 2006–2024 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/sha2.html