#ifndef SHORTCRYPTO_H #define SHORTCRYPTO_H #include #include /** * @brief 最短密文加密工具类 * 流程:明文 → PKCS7填充 → AES-128-CBC加密 → Base85编码 */ class ShortCrypto { public: /** * @brief 加密 * @param plaintext 原始明文 * @param key 16字节密钥(AES-128) * @param iv 16字节初始向量,可为空(内部自动补零) * @return Base85编码的密文字符串 */ static QString encrypt(const QByteArray &plaintext, const QByteArray &key, const QByteArray &iv = QByteArray()); /** * @brief 解密 * @param ciphertext Base85编码的密文 * @param key 16字节密钥(AES-128) * @param iv 16字节初始向量,必须与加密时一致 * @return 原始明文 */ static QByteArray decrypt(const QString &ciphertext, const QByteArray &key, const QByteArray &iv = QByteArray()); private: // Base85 字符集(RFC 1924 变体,不含引号/逗号/句点/斜杠,避免JSON/XML转义问题) static const char *BASE85_CHARS; static QByteArray base85Encode(const QByteArray &data); static QByteArray base85Decode(const QString &text); }; #endif // SHORTCRYPTO_H