Spec-Zone.ru › Nim

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

Spec-Zone.ru

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