/*! \file pidigest.h * \ingroup Core * \~\brief * \~english Digest algorithms * \~russian Алгоритмы хэш-сумм * * \~\details * \~english * This file implements several common-usage hash algorithms * \~russian * Этот файл реализует несколько распространенных алгоритмов хэширования */ /* PIP - Platform Independent Primitives Digest algorithms Ivan Pelipenko peri4ko@yandex.ru This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this program. If not, see . */ #ifndef pidigest_h #define pidigest_h #include "pibytearray.h" #include "piconstchars.h" class PIP_EXPORT PIDigest { public: enum class Type { SHA1, SHA2_224, SHA2_256, SHA2_384, SHA2_512, SHA2_512_224, SHA2_512_256, MD2, MD4, MD5, BLAKE2s_128, BLAKE2s_160, BLAKE2s_224, BLAKE2s_256, BLAKE2b_128, BLAKE2b_160, BLAKE2b_224, BLAKE2b_256, BLAKE2b_384, BLAKE2b_512, Count, }; static int hashLength(Type type); static int blockLength(Type type); static PIConstChars typeName(Type type); static PIByteArray calculate(const PIByteArray & msg, Type type); static PIByteArray HMAC(const PIByteArray & msg, const PIByteArray & key, PIDigest::Type type); }; #endif