Introduce a base class for hashers

This commit is contained in:
hashlag
2025-08-09 19:34:58 +03:00
parent 3841242bdb
commit b513980358
2 changed files with 27 additions and 1 deletions

25
Chaos/Hashing/Hasher.hpp Normal file
View File

@@ -0,0 +1,25 @@
#ifndef CHAOS_HASHING_HASHER_HPP
#define CHAOS_HASHING_HASHER_HPP
namespace Chaos::Hashing
{
template<typename T>
class Hasher
{
public:
template<typename InputIt>
void Update(InputIt begin, InputIt end)
{
static_cast<T &>(*this).Update(begin, end);
}
auto Finish()
{
return static_cast<T &>(*this).Finish();
}
};
} // namespace Chaos::Hashing
#endif

View File

@@ -6,6 +6,7 @@
#include <string>
#include "Hash.hpp"
#include "Hasher.hpp"
namespace Chaos::Hashing::Md4
{
@@ -148,7 +149,7 @@ struct Md4Hash : public Hash<Md4Hash>
std::array<uint8_t, 16> RawDigest;
};
class Md4Hasher
class Md4Hasher : public Hasher<Md4Hasher>
{
public:
Md4Hasher()