#ifndef SHORTCRYPTO_H
|
#define SHORTCRYPTO_H
|
|
#include <QByteArray>
|
#include <QString>
|
|
/**
|
* @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
|