Qt 使用异或进行加密解密

来源:互联网 发布:柠檬绿茶淘宝店 编辑:程序博客网 时间:2024/05/23 21:17
在加密,解密中,异或运算应该时比较简单的一种。下面的代码,采用异或运算进行加密,解密:
#include <QtCore/QCoreApplication>#include <QTextCodec>#include <QString>#include <QDebug>QString getXorEncryptDecrypt(const QString &, const char &);QString byteToQString(const QByteArray &byte);QByteArray qstringToByte(const QString &strInfo);int main(int argc, char *argv[]){    QCoreApplication a(argc, argv);    QString str = QString("http://www.baidu.com?id=1");    QString jiami = getXorEncryptDecrypt(str, 11);    qDebug() << "str:" << str;    qDebug() << "miwen:" << jiami;    QString jiemi = getXorEncryptDecrypt(jiami, 11);    qDebug() << "jimi:" << jiemi;    return a.exec();}QString getXorEncryptDecrypt(const QString &str, const char &key){  QString result;  QByteArray bs = qstringToByte(str);    for(int i=0; i<bs.size(); i++){    bs[i] = bs[i] ^ key;  }    result = byteToQString(bs);  return result;}QString byteToQString(const QByteArray &byte){  QString result;  if(byte.size() > 0){    QTextCodec *codec = QTextCodec::codecForName("utf-8");    result = codec->toUnicode(byte);  }    return result;}QByteArray qstringToByte(const QString &strInfo){  QByteArray result;  if(strInfo.length() > 0){    QTextCodec *codec = QTextCodec::codecForName("utf-8");    result = codec->fromUnicode(strInfo);  }    return result;}

调用过程:

void QLogin::encryption(){    if( m_flagserver == 0)    {        m_server = getXorEncryptDecrypt(m_server, 11);        m_flagserver = 1;    }    if( m_flagjid == 0 )    {       m_jid = getXorEncryptDecrypt(m_jid, 11);       m_flagjid = 1;    }    if( m_flagpassword == 0)    {        m_password = getXorEncryptDecrypt(m_password, 11);        m_flagpassword = 1;    }}void QLogin::decryption(){      m_server = getXorEncryptDecrypt(m_server, 11);    m_jid = getXorEncryptDecrypt(m_jid, 11);    m_password = getXorEncryptDecrypt(m_password, 11);}

加 标记可以防止多次加密。
原创粉丝点击