转载自:https://blog.csdn.net/imbegood/article/details/77771273
Xor.h:
#ifndef XOR_H
#define XOR_H
#include 'QObject'
#include 'QString'
#include 'QByteArray'
#include 'QTextCodec'
class Xor : public QObject
{
Q_OBJECT
public:
explicit Xor(QObject *parent = 0);
~Xor();
QString XorEncryptDecrypt(const QString &, const char &);
private:
QString byteToQString(const QByteArray &byte);
QByteArray qstringToByte(const QString &strInfo);
};
#endif // XOR_H
Xor.cpp:
#include "xor.h"
Xor::Xor(QObject *parent) : QObject(parent)
{
}
Xor::~Xor()
{
}
QString Xor::XorEncryptDecrypt(const QString &str, const char &key)
{
QString result;
QByteArray bs = this->qstringToByte(str);
int i;
for(i=0; i<bs.size(); i++)
{
bs[i] = bs[i] ^ key;
}
result = byteToQString(bs);
return result;
}
QString Xor::byteToQString(const QByteArray &byte)
{
QString result;
if(byte.size() > 0)
{
QTextCodec *codec = QTextCodec::codecForName("utf-8");
result = codec->toUnicode(byte);
}
return result;
}
QByteArray Xor::qstringToByte(const QString &strInfo)
{
QByteArray result;
if(strInfo.length() > 0)
{
QTextCodec *codec = QTextCodec::codecForName("utf-8");
result = codec->fromUnicode(strInfo);
}
return result;
}
主函数:
QString str = QString("Hello World!");
QString jiami = getXorEncryptDecrypt(str, 12);
qDebug() << "str:" << str;
qDebug() << "Encrypto:" << jiami;
QString jiemi = getXorEncryptDecrypt(jiami, 12);
qDebug() << "Decrypto:" << jiemi;