Qt写的简单的字符串加密算法(支持中文字符串加密)

加密算法很简单,就是设定一密钥,将明文与其循环异或得到密文。

关键是中文字符的加密(假设明文字符串为str)

我的解决方法是先将str使用Base64编码再使用与密钥异或加密

QByteArray a = str.toLocal8Bit().toBase64();

QString newStr(a);

解密的时候先与密钥异或,得出的是明文Base64编码后的结果,得出的字符串再用GBK编码标准进行编码打包,这样就可以解出中文字符了

result = QTextCodec::codecForName("GBK")->toUnicode(QByteArray::fromBase64(result.toLocal8Bit()));


Qt中实现一个简单的文本串加密算法,我们可以选择使用一些常见的加密技术,如Caesar Cipher(凯撒密码)或者更复杂的像AES(Advanced Encryption Standard)。这里我会简单地演示如何使用Caesar Cipher作为例子: 首先,确保已安装了Qt的QCryptographicHash库,它包含了基本的加密操作。 1. 创建一个名为`TextEncryptor`的类,包含私有变量用于存储加密偏移量和原始字符串: ```cpp class TextEncryptor { private: int shift; QString originalText; }; ``` 2. 添加构造函数接收偏移量作为参数,并初始化原始文本: ```cpp TextEncryptor::TextEncryptor(int shift) : shift(shift) {} ``` 3. 实现加密方法,使用凯撒密码的位移规则: ```cpp QString encrypt(const QString &text) { QString encrypted = text; for (int i = 0; i < text.length(); ++i) { if ('a' <= text[i] && text[i] <= 'z') { encrypted[i] = static_cast<char>((text[i] - 'a' + shift) % 26 + 'a'); } else if ('A' <= text[i] && text[i] <= 'Z') { encrypted[i] = static_cast<char>((text[i] - 'A' + shift) % 26 + 'A'); } } return encrypted; } ``` 4. 如果需要解密,只需将偏移量取负值即可: ```cpp QString decrypt(const QString &encrypted) { return encrypt(encrypted, -shift); } ``` 5. 测试示例: ```cpp int main() { TextEncryptor encryptor(3); // 使用偏移量3 QString plaintext = "Hello, World!"; QString ciphertext = encryptor.encrypt(plaintext); qDebug() << "Original: " << plaintext << ", Encrypted: " << ciphertext; return QApplication::exec(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值