美文网首页
Qt以Base64加密作为基础实现3种加解密方式

Qt以Base64加密作为基础实现3种加解密方式

作者: 都都嘟 | 来源:发表于2019-01-17 14:46 被阅读0次

    三种方式来加密解密,都是用Qt本身提供的类,没用外接库。

    普通base64加密解密

    Qt已经有了最基本的toBase64加密算法,同时提供fromBase64解密算法。

    加密

    QByteArray text = src.toLocal8Bit();
    
    QByteArray by = text.toBase64();
    

    解密

    QByteArray text = src.toLocal8Bit();
    QByteArray by = text.fromBase64(text);
    QString str = QString::fromLocal8Bit(by); // 注意:这里是处理中文用的
    

    字符大小写加密解密

    在普通Base64加解密算法基础上,用大小写加解密算法进行进一步优化。

    大小写加解密算法

    // 加解密都用此方法
    QString toUpperAndLower(QString src)
    {
        for(int i = 0; i < src.count(); i++) {
            QChar curC = src.at(i);
            if(curC.isUpper()) {
                curC = curC.toLower();
            } else if(curC.isLower()){
                curC = curC.toUpper();
            }
            src[i] = curC;
        }
        return src;
    }
    

    加密

    QByteArray text = src.toLocal8Bit();
    QByteArray by = text.toBase64();
    QString str = QString(by);
    str = toUpperAndLower(str); // 大小写加密
    

    解密

    QString str = toUpperAndLower(src); // 大小写解密
    QByteArray text = str.toLocal8Bit();
    QByteArray by = text.fromBase64(text);
    QString str = QString::fromLocal8Bit(by); // 注意:这里是处理中文用的
    

    异或加解密(钥匙加解密)

    在普通Base64加解密算法基础上,用异或加解密(钥匙加解密)算法进行进一步优化。

    异或加解密(钥匙加解密)算法

    // 加解密都用此方法
    QString toXOREncryptUncrypt(QString src, const QChar key)
    {
        for(int i = 0; i < src.count(); i++) {
            src[i] = src.at(i).toLatin1() ^ key.toLatin1();
        }
        return src;
    }
    

    加密

    QByteArray text = src.toLocal8Bit();
    QByteArray by = text.toBase64();
    QString str = QString(by);
    // 异或加密(钥匙加密) --- 注意:(这里的key是可以指定为任意字符的,相应的,解密也要同意字符才行)
    str = toXOREncryptUncrypt(str, 'g'); 
    

    解密

    QString str = toXOREncryptUncrypt(ui->lineEdit_j_3->text(), 'g'); //异或解密(钥匙解密)
    QByteArray text = str.toLocal8Bit();
    QByteArray by = text.fromBase64(text);
    QString str = QString::fromLocal8Bit(by); // 注意:这里是处理中文用的
    

    来源:CSDN
    原文:https://blog.csdn.net/u014597198/article/details/81975970

    相关文章

      网友评论

          本文标题:Qt以Base64加密作为基础实现3种加解密方式

          本文链接:https://www.haomeiwen.com/subject/vqjidqtx.html