آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

محافظت از دیتابیس

آریا  9 سال پیش  8 سال پیش
+3 0

با سلام خدمت دوستان و اساتید عزیز.
 من یه دیتابیس آماده دارم sqlite حالا چطور میشه اونو انکریپت کرد یا واسش پسورد گذاشت. سرچ کردم و تمام پستها رو خوندم در مورد sql chiper  هم خوندم اما روش یا متدی که بتونم دیتابیسم را به sql chiper تبدیل کنم و انکریپت کنم توش ندیدم یا من متوجه نشدم . لطفا کمک کنید.
 و یه موضوع اینکه من یه برنامه که دیتابیس داشت نصب کردم و اصلا نفهمیدم دیتابیسش کجای موبایل ذخیره شده توی پکیجش که نبود.

0 0
بنده با ی تحقیق کوچیک متوجه شدم ، هیچ جوره نمیشه از مهندسی معکوس جلوگیری کرد (9 سال پیش)
+1 0
میتونید فیلهایی که مهم هستن رو با روش هایی که وجود داره رمزگذاری کنید و بعد توسط یک برنامه ساده که می نوسید دیتابیس جدیدی با فیلهای رمزگذاری شده ایجاد و در برنامه اصلی خودتون از دیتابیس جدید استفاده کنید. توجه کنید احتمالا در این حالت حجم دیتابیس شما بیشتر میشه و در صورتی که تعداد فیلها خیلی زیاد باشن ممکنه سرعت بارگزاری کمی پایین بیاد و برای جستجو کردن یک کلمه در فیلد رمز گذاری شده هم مشکل خواهید داشت. (9 سال پیش)
0 0
میتونید فیلهایی که مهم هستن رو با روش هایی که وجود داره رمزگذاری کنید و بعد توسط یک برنامه ساده که می نوسید دیتابیس جدیدی با فیلهای رمزگذاری شده ایجاد و در برنامه اصلی خودتون از دیتابیس جدید استفاده کنید. توجه کنید احتمالا در این حالت حجم دیتابیس شما بیشتر میشه و در صورتی که تعداد فیلها خیلی زیاد باشن ممکنه سرعت بارگزاری کمی پایین بیاد و برای جستجو کردن یک کلمه در فیلد رمز گذاری شده هم مشکل خواهید داشت. (9 سال پیش)
0 0
متاسفانه در متن بالا فیلدها به اشتباه فیلها تایپ شدن... (9 سال پیش)
+1 0
سلام ممنون از دوستان که پاسخ دادند. اما من هنوز نفهمیدم باید چکار کنم. من دیتابیسم آماده است. چطور باید رمزگذاری کنم؟ (9 سال پیش)
 برای این سوال 5 پاسخ وجود دارد.
پاسخ به سوال 
Possible  9 سال پیش
+4 0

  private void InitializeSQLCipher() {
SQLiteDatabase.loadLibs(this);
File databaseFile = getDatabasePath(path + "db.sqlite");
//آدرس دیتابیس اولیه که میخای رمزنگاری شه

databaseFile.mkdirs();
databaseFile.delete();
SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(databaseFile, "test123", null);
SQLiteDatabase databaseOrginal = SQLiteDatabase.openOrCreateDatabase(path + "dborginal.sqlite", "", null);
// آدرس دیتابیس دومی که رمزنگاری میشه و در ابتدا خالیه

//کار به این صورته که از دیتابیس اولی دونه دونه میخونه و در دیتا بیس دومی مینویسه


database.execSQL("CREATE TABLE tb (id INTEGER PRIMARY KEY NOT NULL DEFAULT ( and .....) )");
{
Cursor cursor = databaseOrginal.rawQuery("SELECT * FROM tb ORDER BY id DESC", null);
while (cursor.moveToNext()) {
int id = cursor.getInt(cursor.getColumnIndex("id"));
int fav = cursor.getInt(cursor.getColumnIndex("fav"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String content = cursor.getString(cursor.getColumnIndex("content"));


database.execSQL("INSERT INTO tb (id,name, content) VALUES
('" + id + "','" + name + "','" + content + "'");

// اینجا موارد رو وارد دیتا بیس جدید میکنه
}
cursor.close();
}


...


onCreat ==> InitializeSQLCipher();

0 0
با تشکر از جوابتون من تو برنامه ام از کلاس HelperIO جهت کپی دیتابیس از پوشه Assets استفاده میکنم . حالا این کدها رو باید کی و کجا استفاده کنم (9 سال پیش)
+1 0
شما دیتابیس رو رمزنگاری میکنید و داخل برنامه قرار میدید.بقیه مراحل هیچ فرقی نداره. دیتابیس کپی میشه و از روش خونده میشه. (9 سال پیش)
0 0
با تشکر از Possible اینجور که از دستورات SQLiteDatabase.loadLibs(this) پیداست باید از یک کتابخونه استفاده بشه؟ اگه درسته کدوم کتابخونه؟ (8 سال پیش)
0 0
کتابخونه sql chiper (8 سال پیش)
0 0
نمیدونم چرا من نمیتونم انجام بدم بازم همون ایراد میگیره (8 سال پیش)
0 0
ببخشید کتابخونه برای چی ؟ منم دیتابیس رو از assets کپی کردم روی کارت حافظه ، و هنوز جلوتر نرفتم ، ولی مگه با همون دستورات ابتدایی که استاد آموزش دادن ( rawQuery , select ) نمیشه از دیتا بیس خوند ؟ (8 سال پیش)
0 0
سلام چرا میشه خوند . من واسه محافظت از دیتابیس گفتم . (8 سال پیش)
0 0
چرا در این خط SQLiteDatabase.loadLibs(this); loadLibs رو نمیشناسه؟ البته تو اندرویداستدیو (8 سال پیش)
پاسخ به سوال 
آریا  8 سال پیش
0 0

 public class Demo_appActivity extends Activity {

    public static final String DIR_SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath();
    public static String       packageName;
    public static String       DIR_APP;


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        InitializeSQLCipher();
    }


    private void InitializeSQLCipher() {
        DIR_APP = DIR_SDCARD + "/android/data/" + packageName;
        SQLiteDatabase.loadLibs(this);
        File databaseFile = getDatabasePath(DIR_APP + "/temp");
        databaseFile.mkdirs();
        databaseFile.delete();
        SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(databaseFile, "test123", null);

        SQLiteDatabase databaseOrginal = SQLiteDatabase.openOrCreateDatabase(DIR_APP + "/temp1", "", null);

        database.execSQL("CREATE  TABLE  IF NOT EXISTS Word (" +
                "word_id INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL  UNIQUE , " +
                "word_unit TEXT, " +
                "word_english TEXT, " +
                "word_translate TEXT" +
                "word_code TEXT" +
                "word_check INTEGER DEFAULT(0)" +
                ")");

        Cursor cursor = databaseOrginal.rawQuery("SELECT * FROM  Word ORDER BY id DESC", null);
        while (cursor.moveToNext()) {
            int id = cursor.getInt(cursor.getColumnIndex("word_id"));
            String unit = cursor.getString(cursor.getColumnIndex("word_unit"));
            String english = cursor.getString(cursor.getColumnIndex("word_english"));
            String translate = cursor.getString(cursor.getColumnIndex("word_translate"));
            String code = cursor.getString(cursor.getColumnIndex("word_code"));
            int check = cursor.getInt(cursor.getColumnIndex("word_check"));
            //String content = cursor.getString(cursor.getColumnIndex("content"));

            database.execSQL("INSERT INTO Word (word_id,word_unit, word_english,word_translate,word_code, word_check) VALUES  ('" + id + "','" + unit + "','" + english + "','" + translate + "','" + code + "'" + check + "'");

        }
        cursor.close();
    }
}

0 0
من کد بالا رو با کمک دوستان possible و لینک آموزش که آقای کاشی زاده معرفی کردند انجام دادم ولی Error میده (8 سال پیش)
پاسخ به سوال 
آریا  8 سال پیش
0 0

+1 0
چنتا فایل هس که باید به برنامت اضافه کنی. اضافه کردی؟؟ (8 سال پیش)
0 0
آره اضافه کردم اینم عکسش (8 سال پیش)
پاسخ به سوال 
آریا  8 سال پیش
0 0

0 0
سلام . دوستان ، اساتید کسی نیست یه راهنمایی کنه؟ (8 سال پیش)
0 0
واقعا کسی نیست کمک کنه ؟ (8 سال پیش)
0 0
؟؟؟؟؟؟؟ (8 سال پیش)
0 0
سلام آریان جان شما تونستید مشکل Encrypt کردن دیتابیس رو حل کنید ؟؟؟ میخواستم ازتون تو این زمینه کمک بگیرم ممنون میشم ج بدین (8 سال پیش)
0 0
سلام حقیقتش نه نتونستم. بچه ها لطف کردن و راهنمایی کردند اما من موفق نشدم و یه جورایی بیخیالش شدم اما اگر شما موفق شدین به منم خبر بدین لطفا (8 سال پیش)
0 0
من یک هفته اس درگیرشم چون دیتابیسم برام خیلی مهم حتما باید انجامش بدم اگه شد حتما میزارم ک دوستان استفاده کنند (8 سال پیش)
پاسخ به سوال 
tiam  8 سال پیش
+2 0

امروزه امنیت در تمامی زمینه هایی از اهمیت خاصی برخوردار است. برنامه نویسان اندروید نیز برای ذخیره سازی امن اطلاعات الگوریتم های مختلفی را در برنامه های خود پیاده سازی نمایند.با استفاده از این کتابخانه می توان اطلاعات استفاده شده در برنامه را به امنت ترین شکل ممکن رمزنگاری کرد.

ویژگی های رعایت شده در این الگوریتم AES به شرح زیر می باشد

  • 256-bit AES key
  • CBC mode
  • PKCS7Padding
  • Blank/Empty IV (default*)

این کتابخانه از اندروید 2.3 به بالا قابل استفاده می باشد.https://github.com/scottyab/AESCrypt-Android

0 0
برای دیتابیس خارجی هم قابل استفاده است؟ (8 سال پیش)
+1 0
شما دیتابیس رو encrypt میکنی و بعدش استفاده میکنی تفاوتی نداره خارجی و داخلی باشه منظورتون رو از خارجی درست متوجه نشدم (8 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .