ذخیره اطلاعات مهم در فایل
سلام دوستان.
من در برنامه ای که دارم مینویسم ، باید یه سری اطلاعات بسیار مهم که اصلا نباید لو برو رو درون یه فایل با فرمت اختصاصی خودم ذخیره کنم.
مشکل من اینه که میخوام مثل فایل های DLL که وقتی با Notepad بازشون میکنی ، یه سری کارکترهای نامفهوم نمایش داده میشه ؛ اطلاعات رو ذخیره کنم.
منظورم اینه که نمیخوام به صورت Text باشه که Encode کرده باشه. میخوام مثل فایل های باینری اصلا قابل دیده نباشه.
خیلی ممنونم.
نقل قول: ذخیره اطلاعات مهم در فایل
نقل قول:
نوشته شده توسط
AliRezaBeytari
من در برنامه ای که دارم مینویسم ،..
سلام می تونید اطلاعاتتون رو به روش hex یا base64 کد گذاری کنید مثلا
QTextEdit *tedit = new QTextEdit(this);
QString file_neme = "c:/ali.txt";
QFile *myfile = new QFile(file_neme);
myfile->open(QIODevice::ReadWrite);
QByteArray c = myfile->readAll();
QString encoded = QString(c.toBase64());//c.toHex();
tedit->setText(QString(encoded));
برای خوندن هم می تونی این جوری بنویسی
c.fromBase64(),c.fromHex()
نقل قول: ذخیره اطلاعات مهم در فایل
نقل قول:
نوشته شده توسط
chikar
سلام می تونید اطلاعاتتون رو به روش hex یا base64 کد گذاری کنید مثلا
QTextEdit *tedit = new QTextEdit(this);
QString file_neme = "c:/ali.txt";
QFile *myfile = new QFile(file_neme);
myfile->open(QIODevice::ReadWrite);
QByteArray c = myfile->readAll();
QString encoded = QString(c.toBase64());//c.toHex();
tedit->setText(QString(encoded));
برای خوندن هم می تونی این جوری بنویسی
c.fromBase64(),c.fromHex()
دوست عزیز ، من گفتم نمیخوام کاربر بتونه حتی متن Encode شده رو هم ببینه.
مثل میخوام وقتی کاربر اون فایلی که من ذخیره کردم رو با نرم افزار ویرایشگر متنی مثل ++Notepad باز کرد ، اینطوری نمایش داده بشه :
http://p30up.ir/images/qu2uj5nc8jimhlq16x0w.png
ممنونم.
نقل قول: ذخیره اطلاعات مهم در فایل
به طور مثال ، شما میتونید به شکل زیر عمل کنید :
#include <QCoreApplication>
#include <QFile>
#include <iostream>
#include <QDataStream>
using namespace std;
struct test_t
{
int index;
QString data;
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QFile i_file("D:/saalaam.txt");
i_file.open(QIODevice::ReadWrite);
test_t t;
QDataStream i_stream(&i_file);
//Read Data:
if (i_file.isOpen())
{
if (i_file.exists())
{
while (!i_stream.atEnd())
{
i_stream>>t.index>>t.data;
cout<<t.index<<" "<<t.data.toStdString()<<"\n";
//i_file.seek(sizeof(t));
}
}
for (int counter = 0; counter < 4; ++counter)
{
t.index=counter;
t.data=QString("x").repeated(counter);
i_stream<<t.index<<t.data;
}
}
i_file.close();
return a.exec();
}
نقل قول: ذخیره اطلاعات مهم در فایل
base64 الگوريتم مناسبی برای رمزنگاری نيست و به سادگی قابل بازگشت هست بهتره برای ذخيره اطلاعات برنامتون از ديتابيس Sqlite استفاده کنيد و برای ديتابيس پسورد مشخص کنيد اگر قرار هست پسورد رو در خود فايل برنامه ذخيره کنيد پسورد رو به وسيله رمزنگاری های مختلف مثل RSA و AES يا بهتر ترکيبی از چند الگوريتم نگهداری کنيد و خود فايل برنامه هم پک کنيد
نقل قول: ذخیره اطلاعات مهم در فایل
نقل قول:
نوشته شده توسط
returnx
به طور مثال ، شما میتونید به شکل زیر عمل کنید :
#include <QCoreApplication>
#include <QFile>
#include <iostream>
#include <QDataStream>
using namespace std;
struct test_t
{
int index;
QString data;
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QFile i_file("D:/saalaam.txt");
i_file.open(QIODevice::ReadWrite);
test_t t;
QDataStream i_stream(&i_file);
//Read Data:
if (i_file.isOpen())
{
if (i_file.exists())
{
while (!i_stream.atEnd())
{
i_stream>>t.index>>t.data;
cout<<t.index<<" "<<t.data.toStdString()<<"\n";
//i_file.seek(sizeof(t));
}
}
for (int counter = 0; counter < 4; ++counter)
{
t.index=counter;
t.data=QString("x").repeated(counter);
i_stream<<t.index<<t.data;
}
}
i_file.close();
return a.exec();
}
خب تو این هم که اطلاعات به صورت رشته ای نمایش داده میشه !!!
1 ضمیمه
نقل قول: ذخیره اطلاعات مهم در فایل
نقل قول:
نوشته شده توسط
AliRezaBeytari
خب تو این هم که اطلاعات به صورت رشته ای نمایش داده میشه !!!
نه! شما فقط بعضی از مقادیر رشته ای را به این صورت میبینید برای مثال تصویر زیر تصویر محتوای یک فایل اجرایی در ویندوز هست که به صورت ترتیبی باز شده همون طور که در تصویر با رنگ صورتی مشخص شده شما بعضی از مقادیر رشته ای را میتونید ببنید اما اونچیزی که اهمیت داره ، اینکه چون ما دقیقا با structure فایل اجرایی آشنا نیستیم (اینجا از فایل اجرایی به عنوان مثال استفاده شده ، منظور فایل تصادفی است) ، نمیتونیم به راحتی اطلاعات را استخراج کنیم :
ضمیمه 131057
آنچیزی که در فایل های تصادفی بیشتر مورد توجه است ، ساختار فایل هست به همین دلیل هست که به طور مثال شما به راحتی نمیتوانید از یک فایل با قالب خاصی مثل (PNG) استفاده کنید ، مگر اینکه از ساختار(قالب) فایل با خبر باشید...
باید بگم که به طور مثال اگر شما کد مثال من را نمیدید و فقط فایل در اختیار شما قرار میگرفت ، نمیتونستید به راحتی متوجه ساختار فایل بشید...