Console Library 8.0.0
A header-only library that makes C++ simple
Loading...
Searching...
No Matches
crypto.h File Reference

提供SHA256、MD5、Base64和AES加密功能的加密库。 More...

#include <algorithm>
#include <chrono>
#include <cstdint>
#include <cstring>
#include <fstream>
#include <iomanip>
#include <random>
#include <sstream>
#include <stdexcept>
#include <vector>

Go to the source code of this file.

Namespaces

namespace  console
 本库所有组件所在的顶层命名空间。
namespace  console::crypto
 密码学相关的命名空间。
namespace  console::crypto::sha256_impl
 SHA256哈希算法的内部实现细节。
namespace  console::crypto::md5_impl
 MD5哈希算法的内部实现细节。
namespace  console::crypto::aes_impl
 AES加密算法的内部实现细节。

Functions

uint32_t console::crypto::sha256_impl::rotr (uint32_t x, uint32_t n)
 对32位无符号整数进行循环右移。
uint32_t console::crypto::sha256_impl::ch (uint32_t x, uint32_t y, uint32_t z)
 SHA256中的选择函数Ch。
uint32_t console::crypto::sha256_impl::maj (uint32_t x, uint32_t y, uint32_t z)
 SHA256中的多数函数Maj。
uint32_t console::crypto::sha256_impl::sigma0 (uint32_t x)
 SHA256中的大西格玛0函数。
uint32_t console::crypto::sha256_impl::sigma1 (uint32_t x)
 SHA256中的大西格玛1函数。
uint32_t console::crypto::sha256_impl::gamma0 (uint32_t x)
 SHA256中的小西格玛0函数。
uint32_t console::crypto::sha256_impl::gamma1 (uint32_t x)
 SHA256中的小西格玛1函数。
void console::crypto::sha256_impl::transform (uint32_t *state, const uint8_t *data)
 对64字节的数据块执行SHA256变换。
std::string console::crypto::sha256 (const std::string &input)
 计算输入字符串的SHA256哈希值。
std::string console::crypto::file_sha256 (const std::string &filename)
 计算文件的SHA256哈希值。
uint32_t console::crypto::md5_impl::F (uint32_t x, uint32_t y, uint32_t z)
 MD5第一轮逻辑函数F。
uint32_t console::crypto::md5_impl::G (uint32_t x, uint32_t y, uint32_t z)
 MD5第二轮逻辑函数G。
uint32_t console::crypto::md5_impl::H (uint32_t x, uint32_t y, uint32_t z)
 MD5第三轮逻辑函数H。
uint32_t console::crypto::md5_impl::I (uint32_t x, uint32_t y, uint32_t z)
 MD5第四轮逻辑函数I。
uint32_t console::crypto::md5_impl::rotate_left (uint32_t x, uint32_t n)
 对32位无符号整数进行循环左移。
void console::crypto::md5_impl::transform (uint32_t *state, const uint8_t *block)
 对64字节的数据块执行MD5变换。
std::string console::crypto::md5 (const std::string &input)
 计算输入字符串的MD5哈希值。
std::string console::crypto::base64_encode (const std::string &input)
 对输入字符串进行Base64编码。
std::string console::crypto::base64_decode (const std::string &input)
 对Base64编码的字符串进行解码。
void console::crypto::aes_impl::sub_bytes (uint8_t *state)
 字节替换操作,使用S盒替换状态矩阵中的每个字节。
void console::crypto::aes_impl::inv_sub_bytes (uint8_t *state)
 逆字节替换操作,使用逆S盒替换状态矩阵中的每个字节。
void console::crypto::aes_impl::shift_rows (uint8_t *state)
 行移位操作,将状态矩阵的各行循环左移不同偏移量。
void console::crypto::aes_impl::inv_shift_rows (uint8_t *state)
 逆行移位操作,将状态矩阵的各行循环右移不同偏移量。
uint8_t console::crypto::aes_impl::gmul (uint8_t a, uint8_t b)
 在GF(2^8)有限域中执行乘法运算。
void console::crypto::aes_impl::mix_columns (uint8_t *state)
 列混合操作,对状态矩阵的每一列进行线性变换。
void console::crypto::aes_impl::inv_mix_columns (uint8_t *state)
 逆列混合操作,对状态矩阵的每一列进行逆线性变换。
void console::crypto::aes_impl::add_round_key (uint8_t *state, const uint8_t *key)
 轮密钥加操作,将状态矩阵与轮密钥进行异或。
void console::crypto::aes_impl::key_expansion (const uint8_t *key, uint8_t *round_keys)
 AES密钥扩展算法,将原始密钥扩展为11轮使用的轮密钥。
void console::crypto::aes_impl::aes_encrypt_block (const uint8_t *input, uint8_t *output, const uint8_t *round_keys)
 AES加密单个块(128位)。
void console::crypto::aes_impl::aes_decrypt_block (const uint8_t *input, uint8_t *output, const uint8_t *round_keys)
 AES解密单个块(128位)。
std::string console::crypto::aes_impl::pad_key (const std::string &key)
 将密钥填充到16字节(AES-128要求的密钥长度)。
std::string console::crypto::aes_impl::random_bytes ()
 生成随机字节序列。
std::string console::crypto::aes_encrypt (const std::string &plaintext, const std::string &key)
 使用AES-128-CTR模式加密明文。
std::string console::crypto::aes_decrypt (const std::string &ciphertext, const std::string &key)
 使用AES-128-CTR模式解密密文。

Variables

static constexpr uint32_t console::crypto::sha256_impl::K [64]
 SHA256算法使用的常量K数组。
static constexpr uint32_t console::crypto::md5_impl::S [64]
 MD5算法中每轮循环使用的左移位数数组。
static constexpr uint32_t console::crypto::md5_impl::K [64]
 MD5算法中使用的常量K数组。
static constexpr uint8_t console::crypto::aes_impl::Sbox [256]
 AES算法的S盒,用于字节替换。
static constexpr uint8_t console::crypto::aes_impl::InvSbox [256]
 AES算法的逆S盒,用于解密时的字节替换。

Detailed Description

提供SHA256、MD5、Base64和AES加密功能的加密库。

该库实现了常用的密码学算法,包括哈希函数(SHA256、MD5)、编码转换(Base64)以及对称加密(AES-128-CTR)。

Author
MrXie1109
Date
2026