TA的每日心情![](source/plugin/dsu_paulsign/img/emot/kx.gif) | 开心 2024-8-31 15:58 |
---|
签到天数: 89 天 [LV.6]常住居民II
管理员
- 积分
- 3366
|
- #include <afxstr.h> // 包含CString的定义
- #include "Base64.h" // 假设你有一个Base64编解码的头文件
- // XOR加密函数,使用一个简单的密钥
- std::vector<unsigned char> XOREncrypt(const std::vector<unsigned char>& data, const unsigned char key) {
- std::vector<unsigned char> encrypted(data.size());
- for (size_t i = 0; i < data.size(); ++i) {
- encrypted[i] = data[i] ^ key;
- }
- return encrypted;
- }
- // XOR解密函数(与加密相同,因为XOR是自反的)
- std::vector<unsigned char> XORDecrypt(const std::vector<unsigned char>& encrypted, const unsigned char key) {
- return XOREncrypt(encrypted, key); // XOR解密实际上就是再次XOR加密
- }
- // 将CString转换为UTF-8编码的std::vector<unsigned char>
- std::vector<unsigned char> CStringToUTF8(const CString& str) {
- CT2A exConverter(str.GetString()); // 将CString转换为char*
- int len = strlen(exConverter);
- std::vector<unsigned char> utf8Bytes(len);
- std::copy(exConverter, exConverter + len, utf8Bytes.begin());
- return utf8Bytes;
- }
- // 将UTF-8编码的std::vector<unsigned char>转换回CString
- CString UTF8ToCString(const std::vector<unsigned char>& bytes) {
- return CStringA((LPCTSTR)bytes.data(), static_cast<int>(bytes.size()));
- }
- // 加密并编码CString
- CString EncryptAndEncode(CString csOriginal, unsigned char key) {
- std::vector<unsigned char> utf8Data = CStringToUTF8(csOriginal);
- std::vector<unsigned char> encrypted = XOREncrypt(utf8Data, key);
- CString encoded = Base64Encode(encrypted); // 假设你有一个Base64Encode函数
- return encoded;
- }
- // 解码并解密CString
- CString DecodeAndDecrypt(CString csEncoded, unsigned char key) {
- std::vector<unsigned char> decoded = Base64Decode(csEncoded); // 假设你有一个Base64Decode函数
- std::vector<unsigned char> decrypted = XORDecrypt(decoded, key);
- CString decryptedCString = UTF8ToCString(decrypted);
- return decryptedCString;
- }
- // 在你的ObjectARX代码中使用这些函数...
- // ...
复制代码 |
|