1. 程式人生 > >Qt以Base64加密作為基礎實現3種加解密方式(包含中文處理)

Qt以Base64加密作為基礎實現3種加解密方式(包含中文處理)

目錄

效果圖

這裡寫圖片描述

加密演算法

本文提供三種方式來加密解密,都是用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); // 注意:這裡是處理中文用的

原始碼分享