Files
2026-09-16 14:07:40 +08:00

84 lines
2.1 KiB
C++

/**
* @file test_crypto.cpp
* @brief memory 模块单元测试(Crypto 加密哈希)
*
*
* @version 1.0
* @author CodeBuddy
* @date 26-09-03
*
* @note
*/
#include <gtest/gtest.h>
#include "memory/dl_crypto.h"
#include "base/dl_string.h"
TEST(CryptoTest, HashMd5)
{
std::string str = "abc";
dl::Buffer hash = dl::Crypto::HashMd5(dl::CreateBufferView(str));
EXPECT_EQ(dl::to_string_hex(dl::CreateBufferView(hash)), "900150983cd24fb0d6963f7d28e17f72");
}
TEST(CryptoTest, HashSha256)
{
std::string str = "abc";
dl::Buffer hash = dl::Crypto::HashSha256(dl::CreateBufferView(str));
EXPECT_EQ(dl::to_string_hex(dl::CreateBufferView(hash)),
"ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad");
}
TEST(CryptoTest, HashSha512)
{
std::string str = "abc";
dl::Buffer hash = dl::Crypto::HashSha512(dl::CreateBufferView(str));
// sha512 结果固定长度 64 字节
EXPECT_EQ(hash.size(), 64u);
}
TEST(CryptoTest, HashCrc32)
{
std::string str = "abc";
uint32_t crc = dl::Crypto::HashCrc32(dl::CreateBufferView(str));
EXPECT_NE(crc, 0u);
// 同一数据结果一致
EXPECT_EQ(crc, dl::Crypto::HashCrc32(dl::CreateBufferView(str)));
}
TEST(CryptoTest, Base64)
{
std::string str = "hello world";
std::string enc = dl::Crypto::EncodeBase64(dl::CreateBufferView(str));
EXPECT_EQ(enc, "aGVsbG8gd29ybGQ=");
dl::Buffer dec;
EXPECT_TRUE(dl::Crypto::DecodeBase64(enc, dec));
EXPECT_EQ(dl::to_string(dec), str);
}
TEST(CryptoTest, Xor)
{
std::string str = "hello dl";
dl::Buffer buf = dl::CreateBuffer(dl::CreateBufferView(str));
dl::BufferView view = dl::CreateBufferView(buf);
dl::Crypto::EncryptXor(view);
EXPECT_NE(dl::to_string(view), str); // 加密后应不同
dl::Crypto::DecryptXor(view);
EXPECT_EQ(dl::to_string(view), str); // 解密后还原
}
TEST(CryptoTest, Aes256)
{
std::string str = "hello dl aes256";
dl::Crypto::Aes256Key key = dl::Crypto::GenerateKeyAes256();
dl::Buffer enc = dl::Crypto::EncryptAes256(dl::CreateBufferView(str), key);
EXPECT_FALSE(enc.empty());
dl::Buffer dec = dl::Crypto::DecryptAes256(enc, key);
EXPECT_EQ(dl::to_string(dec), str);
}