密码学工具 — 哈希函数 & 安全随机数
第 18 课:密码学工具 — 哈希函数 & 安全随机数 对应源文件: trantor/utils/Utilities.h — 公开 API(Hash128/160/256、所有哈希函数、secureRandomBytes) trantor/utils/Utilities.cc — 无 TLS 后端时的纯 C 实现 trantor/utils/crypto/openssl.cc — OpenSSL 后端实现 trantor/utils/crypto/botan.cc — Botan 后端实现 trantor/utils/crypto/md5.h/cc — 内置 MD5(纯 C) trantor/utils/crypto/sha1.h/cc — 内置 SHA1(纯 C,公有域) trantor/utils/crypto/sha256.h/cc — 内置 SHA256(纯 C) trantor/utils/crypto/sha3.h/cc — 内置 SHA3-256(Keccak,纯 C) trantor/utils/crypto/blake2.h/cc — 内置 BLAKE2b-256(纯 C) 一、整体架构:三层后端选择 trantor 的密码学工具采用编译期后端切换设计,同一套 API 在三种环境下对应不同实现: 1 2 3 4 5 6 7 8 9 10 11 12 13 用户代码 │ ▼ trantor::utils::md5(data, len) ← 统一 API(Utilities.h) │ ├─ USE_OPENSSL 定义时 ──→ crypto/openssl.cc (OpenSSL EVP API) ├─ USE_BOTAN 定义时 ──→ crypto/botan.cc (Botan HashFunction) └─ 两者均无时 ──────────→ Utilities.cc (内置纯 C 实现) ├─ crypto/md5.cc ├─ crypto/sha1.cc ├─ crypto/sha256.cc ├─ crypto/sha3.cc └─ crypto/blake2.cc 设计原理: ...