• Qt使用异或进行加密解密


     
        在加密,解密中,异或运算应该时比较简单的一种。下面的代码,采用异或运算进行加密,解密:

    点击(此处)折叠或打开

    1. #include <QtCore/QCoreApplication>
    2. #include <QTextCodec>
    3. #include <QString>
    4. #include <QDebug>
    5. QString getXorEncryptDecrypt(const QString &, const char &);
    6. QString byteToQString(const QByteArray &byte);
    7. QByteArray qstringToByte(const QString &strInfo);
    8. int main(int argc, char *argv[])
    9. {
    10.     QCoreApplication a(argc, argv);
    11.     QString str = QString("http://www.baidu.com?id=1");
    12.     QString jiami = getXorEncryptDecrypt(str, 11);
    13.     qDebug() << "str:" << str;
    14.     qDebug() << "miwen:" << jiami;
    15.     QString jiemi = getXorEncryptDecrypt(jiami, 11);
    16.     qDebug() << "jimi:" << jiemi;
    17.     return a.exec();
    18. }
    19. QString getXorEncryptDecrypt(const QString &str, const char &key)
    20. {
    21.   QString result;
    22.   QByteArray bs = qstringToByte(str);
    23.   
    24.   for(int i=0; i<bs.size(); i++){
    25.     bs[i] = bs[i] ^ key;
    26.   }
    27.   
    28.   result = byteToQString(bs);
    29.   return result;
    30. }
    31. QString byteToQString(const QByteArray &byte)
    32. {
    33.   QString result;
    34.   if(byte.size() > 0){
    35.     QTextCodec *codec = QTextCodec::codecForName("utf-8");
    36.     result = codec->toUnicode(byte);
    37.   }
    38.   
    39.   return result;
    40. }
    41. QByteArray qstringToByte(const QString &strInfo)
    42. {
    43.   QByteArray result;
    44.   if(strInfo.length() > 0){
    45.     QTextCodec *codec = QTextCodec::codecForName("utf-8");
    46.     result = codec->fromUnicode(strInfo);
    47.   }
    48.   
    49.   return result;
    50. }
    testXorJiami$ ./testXorJiami
    str: "http://www.baidu.com?id=1" 
    miwen: "c^?^?{1$$|||%ijbo~%hdf4bo6:" 
    jimi: "http://www.baidu.com?id=1"

     xorEncryptDecrypt.rar   
  • 相关阅读:
    IOS AutoLayout 代码实现约束—VFL
    理解iOS Event Handling
    一些优秀的iOS第三方库
    iOS中NSNotification、delegate、KVO三者之间的区别与联系?
    laravel 框架加载自定义函数/类文件
    Nodejs 使用 socket.io 简单实现实时通信
    Redis 与 Memcache 的异同之处
    Redis 服务安装
    PHP 依赖管理神器 Composer 基本使用
    Ajax无刷新图片插件使用
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/4421609.html
Copyright © 2020-2023  润新知