|
Console Library 8.0.0
A header-only library that makes C++ simple
|
提供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盒,用于解密时的字节替换。 | |
提供SHA256、MD5、Base64和AES加密功能的加密库。
该库实现了常用的密码学算法,包括哈希函数(SHA256、MD5)、编码转换(Base64)以及对称加密(AES-128-CTR)。