遇到一個需求,因為xml中含有對sql語句,不希望客戶能直接看到,是以網上搜了下加密。下面是一種很簡單很簡單的方法。隻是提供基本的無法看到明文的方法。
原文連接配接:http://blog.csdn.net/hai8902882/article/details/7860933
中文檔案加密、解密,最簡單的方法即可利用
QByteArrary::toBase64(),QByteArray::fromBase64()函數進行轉碼和解碼進行簡單加密、解密
即自己寫個簡單程式将中文檔案加密後儲存于新的檔案中,再通過通過fromBase64解密顯示。
代碼簡單如下:
void encryptionWindow::encryption(const QString &fileName, const QString &dest)
{
QFile original(fileName);
if(!original.open(QIODevice::ReadOnly))
{
qDebug() << "original open error!";
}
QByteArray ba = original.readAll().toBase64();
QFile destFile(dest);
if(!destFile.open(QIODevice::WriteOnly))
{
qDebug() << "dest open error!";
}
destFile.write(ba);
original.close();
destFile.close();
}
解密:
void encryptionWindow::deciphering(const QString &fileName, const QString &destFileName)
{
QFile file(fileName);
if(!file.open(QIODevice::ReadOnly))
{
qDebug() << "file open error!";
}
QFile dest(destFileName);
if(!dest.open(QIODevice::WriteOnly| QIODevice::Truncate))
{
qDebug() << "file open error!";
}
dest.write(QByteArray::fromBase64(file.readAll()));
dest.close();
file.close();
}
其中,如果檔案中包含中文的話,會亂碼。網上找到解決辦法
連接配接:http://www.btlinux.cn/show1.asp?wid=1676
首先有一個txt的文本檔案,内部有中文,一般情況下這樣的中文是以GBK标準編碼的,除非你在存儲的時候顯式地存為Unicode。直接通過
QFile,然後讀取QByteArray,會發現在指令行裡面顯示出來的是亂碼,那是因為Qt預設情況下會以ASCII編碼來解釋字元串的,這個時侯我
們就需要對字元産編碼進行轉化,QTextCodec類可以很好的幫助我們完成這一任務。
首先包含頭檔案:
#include
然後,可以參考如下代碼:
QString str;
QFile file("E:\\a.txt");
if
(!file.open(QIODevice::ReadOnly))
{
cerrreturn 1;
}
QTextCodec *tc =
QTextCodec::codecForName("GBK");
QByteArray ba = file.readAll();
str =
tc->toUnicode(ba);
cout這個時候,就能夠正常顯示中文了。