天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 119|回复: 1

使用XOR加密、Base64编码和解码的示例代码

[复制链接]
  • TA的每日心情
    开心
    2024-8-31 15:58
  • 签到天数: 89 天

    [LV.6]常住居民II

    488

    主题

    207

    回帖

    3366

    积分

    管理员

    积分
    3366
    发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
    1. #include <afxstr.h> // 包含CString的定义
    2. #include "Base64.h" // 假设你有一个Base64编解码的头文件
    3. // XOR加密函数,使用一个简单的密钥
    4. std::vector<unsigned char> XOREncrypt(const std::vector<unsigned char>& data, const unsigned char key) {
    5.     std::vector<unsigned char> encrypted(data.size());
    6.     for (size_t i = 0; i < data.size(); ++i) {
    7.         encrypted[i] = data[i] ^ key;
    8.     }
    9.     return encrypted;
    10. }
    11. // XOR解密函数(与加密相同,因为XOR是自反的)
    12. std::vector<unsigned char> XORDecrypt(const std::vector<unsigned char>& encrypted, const unsigned char key) {
    13.     return XOREncrypt(encrypted, key); // XOR解密实际上就是再次XOR加密
    14. }
    15. // 将CString转换为UTF-8编码的std::vector<unsigned char>
    16. std::vector<unsigned char> CStringToUTF8(const CString& str) {
    17.     CT2A exConverter(str.GetString()); // 将CString转换为char*
    18.     int len = strlen(exConverter);
    19.     std::vector<unsigned char> utf8Bytes(len);
    20.     std::copy(exConverter, exConverter + len, utf8Bytes.begin());
    21.     return utf8Bytes;
    22. }
    23. // 将UTF-8编码的std::vector<unsigned char>转换回CString
    24. CString UTF8ToCString(const std::vector<unsigned char>& bytes) {
    25.     return CStringA((LPCTSTR)bytes.data(), static_cast<int>(bytes.size()));
    26. }
    27. // 加密并编码CString
    28. CString EncryptAndEncode(CString csOriginal, unsigned char key) {
    29.     std::vector<unsigned char> utf8Data = CStringToUTF8(csOriginal);
    30.     std::vector<unsigned char> encrypted = XOREncrypt(utf8Data, key);
    31.     CString encoded = Base64Encode(encrypted); // 假设你有一个Base64Encode函数
    32.     return encoded;
    33. }
    34. // 解码并解密CString
    35. CString DecodeAndDecrypt(CString csEncoded, unsigned char key) {
    36.     std::vector<unsigned char> decoded = Base64Decode(csEncoded); // 假设你有一个Base64Decode函数
    37.     std::vector<unsigned char> decrypted = XORDecrypt(decoded, key);
    38.     CString decryptedCString = UTF8ToCString(decrypted);
    39.     return decryptedCString;
    40. }
    41. // 在你的ObjectARX代码中使用这些函数...
    42. // ...
    复制代码

     

     

     

     

    使用XOR加密、Base64编码和解码的示例代码
    中国膜结构网打造全中国最好的膜结构综合平台 ,统一协调膜结构设计,膜结构施工,膜材采购,膜材定制,膜结构预算全方位服务。 中国空间膜结构协会合作单位。
  • TA的每日心情
    开心
    4 天前
  • 签到天数: 138 天

    [LV.7]常住居民III

    850

    主题

    625

    回帖

    4765

    积分

    管理员

    积分
    4765
    QQ
    发表于 2024-7-2 10:12:16 | 显示全部楼层
    1. #include <string>
    2. #include <cstring>
    3. #include <cryptopp/base64.h>
    4. #include <cryptopp/filters.h>
    5. #include <cryptopp/osrng.h>
    6. // ObjectARX头文件
    7. #include <aced.h> // 或者根据你的具体需求导入相应的ObjectARX头文件
    8. class CMsoftlimit {
    9. public:
    10.     CMsoftlimit() : m_key('A') {} // 初始化XOR密钥
    11.     // 使用XOR加密后进行Base64编码
    12.     CString EncryptAndEncode(CString csOriginal) {
    13.         std::string strPlain = csOriginal.GetBuffer();
    14.         std::string encrypted = XOREncrypt(strPlain);
    15.         std::string encoded = Base64Encode(encrypted);
    16.         return CString(encoded.c_str());
    17.     }
    18.     // 使用Base64解码后进行XOR解密
    19.     CString DecodeAndDecrypt(CString csEncoded) {
    20.         std::string decoded = Base64Decode(csEncoded.GetBuffer());
    21.         std::string decrypted = XORDecrypt(decoded);
    22.         return CString(decrypted.c_str());
    23.     }
    24. private:
    25.     std::string XOREncrypt(const std::string& plainText) {
    26.         std::string cipherText = plainText;
    27.         for (size_t i = 0; i < cipherText.length(); ++i) {
    28.             cipherText[i] ^= m_key;
    29.         }
    30.         return cipherText;
    31.     }
    32.     std::string XORDecrypt(const std::string& cipherText) {
    33.         return XOREncrypt(cipherText); // 因为XOR是它自己的逆运算
    34.     }
    35.     std::string Base64Encode(const std::string& input) {
    36.         std::string output;
    37.         CryptoPP::StringSource s(input, true,
    38.             new CryptoPP::Base64Encoder(
    39.                 new CryptoPP::StringSink(output), false
    40.             )
    41.         );
    42.         return output;
    43.     }
    44.     std::string Base64Decode(const char* input) {
    45.         std::string output;
    46.         CryptoPP::StringSource s(input, true,
    47.             new CryptoPP::Base64Decoder(
    48.                 new CryptoPP::StringSink(output)
    49.             )
    50.         );
    51.         return output;
    52.     }
    53.     char m_key; // XOR密钥
    54. };
    55. // 示例使用
    56. void main() {
    57.     CMsoftlimit softlimit;
    58.     CString originalText = _T("Hello, World!");
    59.     CString encodedText = softlimit.EncryptAndEncode(originalText);
    60.     CString decodedText = softlimit.DecodeAndDecrypt(encodedText);
    61.     acutPrintf(_T("Original: %s\n"), originalText.GetString());
    62.     acutPrintf(_T("Encoded: %s\n"), encodedText.GetString());
    63.     acutPrintf(_T("Decoded: %s\n"), decodedText.GetString());
    64. }
    复制代码
    使用XOR加密、Base64编码和解码的示例代码
    深圳市诺科空间膜结构有限公司 专业膜结构设计施工20年,一级设计一级施工  www.nkmjg.cn 欢迎联系电话:138-2526-2292
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池| |网站地图

    GMT+8, 2024-9-8 09:14 , Processed in 0.061832 second(s), 26 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表