遇到一个需求,因为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这个时候,就能够正常显示中文了。