From a9eb746e1ad16dc040916316a87e4ebb44261c37 Mon Sep 17 00:00:00 2001
From: ccy <3140717620@qq.com>
Date: 星期五, 23 十月 2026 14:56:43 +0800
Subject: [PATCH] 修正一下加密解密与主程序统一的问题

---
 shortcrypto.h |   46 ++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 40 insertions(+), 6 deletions(-)

diff --git a/shortcrypto.h b/shortcrypto.h
index 9f0756e..d8306b4 100644
--- a/shortcrypto.h
+++ b/shortcrypto.h
@@ -6,35 +6,69 @@
 
 /**
  * @brief 鏈�鐭瘑鏂囧姞瀵嗗伐鍏风被
- * 娴佺▼锛氭槑鏂� 鈫� PKCS7濉厖 鈫� AES-128-CBC鍔犲瘑 鈫� Base85缂栫爜
+ * 娴佺▼锛氭槑鏂� 鈫� PKCS7濉厖 鈫� AES-128-CBC鍔犲瘑 鈫� 绾瓧姣嶇紪鐮侊紙52瀛楃闆嗭級
+ * V3璁稿彲瀵嗛挜鍙︾敤鏃犲~鍏呭彉浣擄紙encryptRaw锛夛紝杈撳嚭绾ぇ鍐�26瀛楃闆�
  */
 class ShortCrypto
 {
 public:
     /**
-     * @brief 鍔犲瘑
-     * @param plaintext 鍘熷鏄庢枃
+     * @brief 鍔犲瘑锛圴2璁惧ID绛夛紝鍚玃KCS7濉厖锛�
+     * @param plaintext 鍘熷鏄庢枃锛堜换鎰忛暱搴︼級
      * @param key 16瀛楄妭瀵嗛挜锛圓ES-128锛�
      * @param iv 16瀛楄妭鍒濆鍚戦噺锛屽彲涓虹┖锛堝唴閮ㄨ嚜鍔ㄨˉ闆讹級
-     * @return Base85缂栫爜鐨勫瘑鏂囧瓧绗︿覆
+     * @return 绾瓧姣嶇紪鐮佺殑瀵嗘枃瀛楃涓诧紙A-Z/a-z锛�52瀛楃闆嗭紝瀵嗘枃姣�48瀛楄妭鈫�68瀛楃锛�
+     * @note 瑙e瘑绔嚜鍔ㄥ洖閫�鍏煎鏃╂湡Base85鐗堝瘑鏂�
      */
     static QString encrypt(const QByteArray &plaintext, const QByteArray &key, const QByteArray &iv = QByteArray());
 
     /**
-     * @brief 瑙e瘑
-     * @param ciphertext Base85缂栫爜鐨勫瘑鏂�
+     * @brief 瑙e瘑锛圴2璁惧ID绛夛紝鍚玃KCS7楠岃瘉锛�
+     * @param ciphertext 绾瓧姣嶇紪鐮佺殑瀵嗘枃锛堝吋瀹规棭鏈烞ase85鐗堝瘑鏂囷紝鑷姩鍥為��锛�
      * @param key 16瀛楄妭瀵嗛挜锛圓ES-128锛�
      * @param iv 16瀛楄妭鍒濆鍚戦噺锛屽繀椤讳笌鍔犲瘑鏃朵竴鑷�
      * @return 鍘熷鏄庢枃
      */
     static QByteArray decrypt(const QString &ciphertext, const QByteArray &key, const QByteArray &iv = QByteArray());
 
+    /**
+     * @brief 鏃犲~鍏呭姞瀵嗭紙V3涓撶敤锛�
+     * @param plaintext 鍘熷鏄庢枃锛岄暱搴﹀繀椤绘槸16鐨勫�嶆暟锛�16瀛楄妭鏄庢枃 鈫� 16瀛楄妭瀵嗘枃锛�
+     * @param key 16瀛楄妭瀵嗛挜锛圓ES-128锛�
+     * @return 绾ぇ鍐欏瓧姣嶇紪鐮佺殑瀵嗘枃瀛楃涓诧紙A-Z锛�26瀛楃闆嗭級锛�16瀛楄妭鏄庢枃鎭板ソ杈撳嚭28瀛楃
+     * @note 涓嶅仛PKCS7濉厖锛�16瀛楄妭鏄庢枃鑻ヨ蛋濉厖浼氭墿鎴�32瀛楄妭
+     * @note 鑻ユ兂缂╃煭鍒�25瀛楃锛屾妸V3_CHARS鎹㈡垚"A-Z0-9"骞舵妸base鏀逛负36鍗冲彲
+     */
+    static QString encryptRaw(const QByteArray &plaintext, const QByteArray &key);
+
+    /**
+     * @brief 鏃犲~鍏呰В瀵嗭紙V3涓撶敤锛�
+     * @param ciphertext 绾ぇ鍐欏瓧姣嶇紪鐮佺殑瀵嗘枃锛堝吋瀹规棭鏈烞ase85/绾瓧姣嶇増V3瀵嗘枃锛岃嚜鍔ㄥ洖閫�锛�
+     * @param key 16瀛楄妭瀵嗛挜锛圓ES-128锛�
+     * @return 鍘熷鏄庢枃锛堥暱搴︿笌瀵嗘枃涓�鑷达級锛屽畬鏁存�х敱涓婂眰CRC鏍¢獙淇濊瘉
+     */
+    static QByteArray decryptRaw(const QString &ciphertext, const QByteArray &key);
+
 private:
     // Base85 瀛楃闆嗭紙RFC 1924 鍙樹綋锛屼笉鍚紩鍙�/閫楀彿/鍙ョ偣/鏂滄潬锛岄伩鍏岼SON/XML杞箟闂锛�
     static const char *BASE85_CHARS;
 
+    // V3 瀵嗘枃瀛楃闆嗭細绾ぇ鍐欏瓧姣嶏紝涓嶅惈鏁板瓧/灏忓啓/鐗规畩瀛楃锛�26瀛楃闆嗭紝16瀛楄妭鈫�28瀛楃锛�
+    static const char *V3_CHARS;
+
+    // V2 瀵嗘枃瀛楃闆嗭細澶у皬鍐欏瓧姣嶏紝涓嶅惈鏁板瓧/鐗规畩瀛楃锛�52瀛楃闆嗭紝48瀛楄妭鈫�68瀛楃锛�
+    static const char *BASE52_CHARS;
+
     static QByteArray base85Encode(const QByteArray &data);
     static QByteArray base85Decode(const QString &text);
+
+    // 浠绘剰杩涘埗鐨勫ぇ鏁扮紪瑙g爜锛堟暣娈靛瓧鑺傚簭浣滀负澶ф暣鏁帮紝鍓嶅闆朵互alphabet[0]琛ラ綈鍥哄畾浣嶆暟锛�
+    static QByteArray baseNEncode(const QByteArray &data, const char *alphabet, int base);
+    static QByteArray baseNDecode(const QString &text, const char *alphabet, int base);
+
+    // 鍙橀暱鐗堣В鐮侊細杩斿洖鍘绘帀鍓嶅闆剁殑鏈�鐭瓧鑺傚簭锛堜緵闀垮害涓嶅浐瀹氱殑V2瀵嗘枃浣跨敤锛�
+    // 璋冪敤鏂归渶鑷琛ラ綈瀵归綈锛�52瀛楃闆嗕笅鐪熷�艰嚦澶氫涪澶�1涓墠瀵奸浂瀛楄妭锛�
+    static QByteArray baseNDecodeVar(const QString &text, const char *alphabet, int base);
 };
 
 #endif // SHORTCRYPTO_H

--
Gitblit v1.9.1