Files
2026-06-30 17:49:51 +08:00

84 lines
2.1 KiB
C++

#pragma once
#include <string>
#include <rhash.h>
#include <cstdint>
#include <json/json.h>
//#pragma warning(disable : 4251)
#define UOHASH_DLL_API __attribute__((visibility("default")))
namespace uns
{
enum class UOHASH_DLL_API HashID : std::int64_t
{
CRC32 = RHASH_CRC32,
MD4 = RHASH_MD4,
MD5 = RHASH_MD5,
SHA1 = RHASH_SHA1,
TIGER = RHASH_TIGER,
TTH = RHASH_TTH,
BTIH = RHASH_BTIH,
ED2K = RHASH_ED2K,
AICH = RHASH_AICH,
WHIRLPOOL = RHASH_WHIRLPOOL,
RIPEMD160 = RHASH_RIPEMD160,
GOST94 = RHASH_GOST94,
GOST94_CRYPTOPRO = RHASH_GOST94_CRYPTOPRO,
HAS160 = RHASH_HAS160,
GOST12_256 = RHASH_GOST12_256,
GOST12_512 = RHASH_GOST12_512,
SHA224 = RHASH_SHA224,
SHA256 = RHASH_SHA256,
SHA384 = RHASH_SHA384,
SHA512 = RHASH_SHA512,
EDONR256 = RHASH_EDONR256,
EDONR512 = RHASH_EDONR512,
SHA3_224 = RHASH_SHA3_224,
SHA3_256 = RHASH_SHA3_256,
SHA3_384 = RHASH_SHA3_384,
SHA3_512 = RHASH_SHA3_512,
CRC32C = RHASH_CRC32C,
SNEFRU128 = RHASH_SNEFRU128,
SNEFRU256 = RHASH_SNEFRU256,
BLAKE2S = RHASH_BLAKE2S,
BLAKE2B = RHASH_BLAKE2B, //0x40000000
__RHASH_MAX = 0b01111111111111111111111111111111,
SHAKE128 = 0x80000000,
SHAKE256 = 0x100000000,
BASE16 = 0x200000000,
BASE32 = 0x400000000,
BASE32_HEX = 0x800000000,
BASE36 = 0x1000000000,
BASE58 = 0x2000000000,
BASE62 = 0x4000000000,
BASE64 = 0x8000000000,
BASE64_URL = 0x10000000000,
BASE85 = 0x20000000000,
BASE91 = 0x40000000000,
URL = 0x80000000000
};
class UOHASH_DLL_API HashResult
{
private:
bool success;
std::string result;
std::string last_error;
public:
HashResult();
HashResult(std::string res);
HashResult(const HashResult& obj);
HashResult(bool succ, std::string res, std::string err);
public:
static HashResult Faliure(std::string str);
static HashResult Success(std::string str);
public:
std::string GetResult();
std::string GetLastError();
std::string EncodeJsonString(bool unicode = false, bool styled = false);
public:
operator bool();
operator std::string();
operator Json::Value();
};
};