文字加密解密代码
2026-02-15 15:31:50
发布于:浙江
#include <iostream>
#include <string>
#include <windows.h> // 用于 Sleep()
// XOR 加密/解密函数(对称)
std::string xorEncryptDecrypt(const std::string& text, const std::string& key) {
if (key.empty()) {
return text;
}
std::string result = text;
for (size_t i = 0; i < text.size(); ++i) {
result[i] = text[i] ^ key[i % key.size()];
}
return result;
}
// 将二进制数据转为十六进制字符串
std::string toHex(const std::string& data) {
static const char hexChars[] = "0123456789abcdef";
std::string hex;
for (unsigned char c : data) {
hex += hexChars[c >> 4];
hex += hexChars[c & 0xF];
}
return hex;
}
// 从十六进制字符串还原为原始二进制数据
std::string fromHex(const std::string& hex) {
if (hex.empty() || hex.size() % 2 != 0) {
throw std::invalid_argument("无效的十六进制字符串");
}
std::string data;
for (size_t i = 0; i < hex.size(); i += 2) {
char c1 = hex[i], c2 = hex[i + 1];
int high = (c1 >= '0' && c1 <= '9') ? (c1 - '0')
: (c1 >= 'a' && c1 <= 'f') ? (c1 - 'a' + 10)
: (c1 >= 'A' && c1 <= 'F') ? (c1 - 'A' + 10)
: -1;
int low = (c2 >= '0' && c2 <= '9') ? (c2 - '0')
: (c2 >= 'a' && c2 <= 'f') ? (c2 - 'a' + 10)
: (c2 >= 'A' && c2 <= 'F') ? (c2 - 'A' + 10)
: -1;
if (high == -1 || low == -1) {
throw std::invalid_argument("包含非法十六进制字符");
}
data += static_cast<char>((high << 4) | low);
}
return data;
}
int main() { // 可选:支持 UTF-8 输出(如中文)
std::cout << "=== 文本加密与解密工具 ===\n";
std::cout << "1. 加密文本\n";
std::cout << "2. 解密文本\n";
std::cout << "请选择操作 (1 或 2): ";
int choice;
std::cin >> choice;
std::cin.ignore(); // 清除输入缓冲区中的换行符
if (choice != 1 && choice != 2) {
std::cerr << "? 无效选择!\n";
std::cout << "程序将在 10 秒后退出...\n";
Sleep(10000);
return 1;
}
std::string input, key;
std::cout << "请输入要" << (choice == 1 ? "加密" : "解密") << "的内容: ";
std::getline(std::cin, input);
std::cout << "请输入密钥(建议使用字母+数字+符号组合): ";
std::getline(std::cin, key);
if (key.empty()) {
std::cerr << "? 密钥不能为空!\n";
std::cout << "程序将在 10 秒后退出...\n";
Sleep(10000);
return 1;
}
try {
if (choice == 1) {
std::string encrypted = xorEncryptDecrypt(input, key);
std::string hexOutput = toHex(encrypted);
std::cout << "\n??【加密成功】\n";
std::cout << "密文(十六进制):\n" << hexOutput << "\n\n";
std::cout << "?? 请妥善保管密钥和密文!\n";
} else {
std::string binary = fromHex(input);
std::string decrypted = xorEncryptDecrypt(binary, key);
std::cout << "\n??【解密成功】\n";
std::cout << "原文:\n" << decrypted << "\n\n";
}
} catch (const std::exception& e) {
std::cerr << "? 错误: " << e.what() << "\n";
std::cout << "程序将在 10 秒后退出...\n";
Sleep(10000);
return 1;
}
std::cout << "程序将在 10 秒后自动退出...\n";
Sleep(10000); // 暂停 10000 毫秒 = 10 秒
return 0;
}
全部评论 3
!
5天前 来自 山东
0
5天前 来自 上海
0d
5天前 来自 湖北
0码农你好捏
5天前 来自 浙江
0码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!!!!!!!码农回归了!!!!!!
5天前 来自 安徽
0祝贺祝贺
5天前 来自 安徽
0































有帮助,赞一个