Qt環境對文件的Base64+異或加密解密

 加密函數:

#define KEY 10
/********************************************************************************
參數:fileName:待加密的文件名(絕對路徑),encryptionName:加密生成的文件名(絕對路徑)
返回值:true,加密成功;false,加密失敗
*********************************************************************************/
bool fileEncrypt(QString &fileName, QString &encryptionName)
{
    QFile read_file(fileName);
    if(!read_file.open(QIODevice::ReadOnly))
    {
         return false;
    }

    QByteArray  encryption_Array = read_file.readAll().toBase64();

    for(int i = 0; i < encryption_Array.size(); ++i){
        encryption_Array[i] = encryption_Array.at(i) ^ KEY;
    }

    QFile write_file(encryptionName);
    if(!write_file.open(QIODevice::WriteOnly))
    {
         return false;
    }
    write_file.write(encryption_Array);
    read_file.close();
    write_file.close();
    return true;
}

解密函數: 

#define KEY 10
/**********************************************************************************
參數:encryptFile_name:待解密的文件名(絕對路徑),destFile_name:解密生成的文件名(絕對路徑)
返回值:true,解密成功;false,解密失敗
***********************************************************************************/
bool fileDecrypt(QString& encryptFile_name, QString& destFile_name)
{
    QFile read_file(encryptFile_name);
    if(!read_file.open(QIODevice::ReadOnly))
       return false;

    QByteArray database_Array = read_file.readAll();
    for(int i = 0; i < database_Array.size(); ++i){
        database_Array[i] = database_Array.at(i) ^ KEY;
    }
    database_Array = QByteArray::fromBase64(database_Array);

    QFile write_file(destFile_name);
    if(!write_file.open(QIODevice::WriteOnly))
       return false;

    write_file.write(database_Array);
    read_file.close();
    write_file.close();
    return true;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章