merged AI doc, some new pages

This commit is contained in:
2026-03-12 14:46:57 +03:00
parent 07ae277f9e
commit ed13838237
206 changed files with 14088 additions and 5152 deletions

View File

@@ -1,15 +1,8 @@
/*! \file pidigest.h
* \ingroup Core
* \~\brief
* \~english Digest algorithms
* \~russian Алгоритмы хэш-сумм
*
* \~\details
* \~english
* This file implements several common-usage hash algorithms
* \~russian
* Этот файл реализует несколько распространенных алгоритмов хэширования
*/
//! \~\file pidigest.h
//! \~\ingroup Digest
//! \~\brief
//! \~english Digest calculation helpers
//! \~russian Вспомогательные методы вычисления хэш-сумм
/*
PIP - Platform Independent Primitives
Digest algorithms
@@ -35,47 +28,72 @@
#include "pibytearray.h"
#include "piconstchars.h"
//! \class PIDigest
//! \~\ingroup Digest
//! \~\brief
//! \~english One-shot digest API for supported algorithms.
//! \~russian Одношаговый API хэширования для поддерживаемых алгоритмов.
class PIP_EXPORT PIDigest {
public:
//! \~english Supported digest algorithms.
//! \~russian Поддерживаемые алгоритмы хэширования.
enum class Type {
SHA1,
SHA1 /** \~english SHA-1 \~russian SHA-1 */,
SHA2_224,
SHA2_256,
SHA2_384,
SHA2_512,
SHA2_512_224,
SHA2_512_256,
SHA2_224 /** \~english SHA-2 with 224-bit digest \~russian SHA-2 с дайджестом 224 бита */,
SHA2_256 /** \~english SHA-2 with 256-bit digest \~russian SHA-2 с дайджестом 256 бит */,
SHA2_384 /** \~english SHA-2 with 384-bit digest \~russian SHA-2 с дайджестом 384 бита */,
SHA2_512 /** \~english SHA-2 with 512-bit digest \~russian SHA-2 с дайджестом 512 бит */,
SHA2_512_224 /** \~english SHA-512/224 \~russian SHA-512/224 */,
SHA2_512_256 /** \~english SHA-512/256 \~russian SHA-512/256 */,
MD2,
MD4,
MD5,
MD2 /** \~english MD2 \~russian MD2 */,
MD4 /** \~english MD4 \~russian MD4 */,
MD5 /** \~english MD5 \~russian MD5 */,
BLAKE2s_128,
BLAKE2s_160,
BLAKE2s_224,
BLAKE2s_256,
BLAKE2b_128,
BLAKE2b_160,
BLAKE2b_224,
BLAKE2b_256,
BLAKE2b_384,
BLAKE2b_512,
BLAKE2s_128 /** \~english BLAKE2s with 128-bit digest \~russian BLAKE2s с дайджестом 128 бит */,
BLAKE2s_160 /** \~english BLAKE2s with 160-bit digest \~russian BLAKE2s с дайджестом 160 бит */,
BLAKE2s_224 /** \~english BLAKE2s with 224-bit digest \~russian BLAKE2s с дайджестом 224 бита */,
BLAKE2s_256 /** \~english BLAKE2s with 256-bit digest \~russian BLAKE2s с дайджестом 256 бит */,
BLAKE2b_128 /** \~english BLAKE2b with 128-bit digest \~russian BLAKE2b с дайджестом 128 бит */,
BLAKE2b_160 /** \~english BLAKE2b with 160-bit digest \~russian BLAKE2b с дайджестом 160 бит */,
BLAKE2b_224 /** \~english BLAKE2b with 224-bit digest \~russian BLAKE2b с дайджестом 224 бита */,
BLAKE2b_256 /** \~english BLAKE2b with 256-bit digest \~russian BLAKE2b с дайджестом 256 бит */,
BLAKE2b_384 /** \~english BLAKE2b with 384-bit digest \~russian BLAKE2b с дайджестом 384 бита */,
BLAKE2b_512 /** \~english BLAKE2b with 512-bit digest \~russian BLAKE2b с дайджестом 512 бит */,
SipHash_2_4_64,
SipHash_2_4_128,
HalfSipHash_2_4_32,
HalfSipHash_2_4_64,
SipHash_2_4_64 /** \~english SipHash-2-4 with 64-bit output \~russian SipHash-2-4 с выходом 64 бита */,
SipHash_2_4_128 /** \~english SipHash-2-4 with 128-bit output \~russian SipHash-2-4 с выходом 128 бит */,
HalfSipHash_2_4_32 /** \~english HalfSipHash-2-4 with 32-bit output \~russian HalfSipHash-2-4 с выходом 32 бита */,
HalfSipHash_2_4_64 /** \~english HalfSipHash-2-4 with 64-bit output \~russian HalfSipHash-2-4 с выходом 64 бита */,
Count,
Count /** \~english Number of supported algorithms \~russian Количество поддерживаемых алгоритмов */
};
//! \~english Returns digest length in bytes for algorithm "type".
//! \~russian Возвращает длину дайджеста в байтах для алгоритма "type".
static int hashLength(Type type);
//! \~english Returns internal block length in bytes for algorithm "type".
//! \~russian Возвращает внутреннюю длину блока в байтах для алгоритма "type".
static int blockLength(Type type);
//! \~english Returns stable algorithm name for "type".
//! \~russian Возвращает стабильное имя алгоритма для "type".
static PIConstChars typeName(Type type);
//! \~english Calculates digest of message "msg" with algorithm "type".
//! \~russian Вычисляет хэш сообщения "msg" алгоритмом "type".
static PIByteArray calculate(const PIByteArray & msg, Type type);
//! \~english Calculates keyed digest for algorithms with native key support, otherwise returns empty array.
//! \~russian Вычисляет keyed digest для алгоритмов с нативной поддержкой ключа, иначе возвращает пустой массив.
static PIByteArray calculateWithKey(const PIByteArray & msg, const PIByteArray & key, Type type);
//! \~english Calculates HMAC for message "msg" and key "key" with algorithm "type".
//! \~russian Вычисляет HMAC для сообщения "msg" и ключа "key" алгоритмом "type".
static PIByteArray HMAC(const PIByteArray & msg, const PIByteArray & key, PIDigest::Type type);
};