رفتن به مطلب

قفل گذاری روی دیتابیس sqlite


dostmobile

ارسال‌های توصیه شده

در اینجا نحوه رمز گذاشتن روی دیتابیس رو با کمک لایبراری Cipher که باید از قبل اون رو داخل پوشه لایبراری بریزید و فعالش کنید رو میزارم

نحوه کار به این طریق هست که ما یه دیتابیس معمولی داریم که اطلاعات داخلش هست و حالا می خوایم تبدیلش کنیم به یه دیتابیس که رمز روش بیاد.

Sub Process_Globals

Dim mysqlc As SQLCipher

'اینجا یه متغیر برای ساخت یه دیتابیس کد شده تعریف می کنیم

Dim sql1 As SQL

End Sub'در ادامه هم یه متغیر دیتابیس معمولی که داریم رو تعریف می کنیم

Sub Globals

Dim label1 , label2 As Label

Dim curs1 , curs2 As Cursor

Dim list1 As List

End Sub

' اینجا یه لیست تعریف می کنیم که بتونیم اطلاعات رو جابجا کنیم از دیتابیس معمولی به کریپت شده

Sub Activity_Create(FirstTime As Boolean)

Activity.LoadLayout("layout1")

File.Copy (File.DirAssets , "sia.db", File.DirInternal , "sia.db")

sql1.Initialize (File.DirInternal , "sia.db" , False)

'اینجا دیتابیس اصلی رو میریزم تو حافظه

If File.Exists (File.DirInternal , "sia5.db")= False Then

mysqlc.Initialize (File.DirInternal , "sia5.db", True , "1234test" , File.DirAssets)

'اینجا می گیم اگه دیتابیس کریپت شده قبلا ساخته نشده بسازه و پسورد بهش میدیم که باید دقت بشه پسورد فراموش نشه تا بتونیم در برنامه اصلیمون از دیتابیس با همین پسورد استفاده کنیم

و بعد از پسورد ازمون می خواد که آدرس فایل sqlcipher_native.zip رو بدیم که همینی که من دادم رو بده عزیز و حتما این فایل رو در برنامه کنار لایه ها ادد کن در قسمت فایل (خودت کپی پیست نکن و از قسمت فایلو ادد استفاده کن

mysqlc.ExecNonQuery("CREATE TABLE shim (Ename TEXT , Fname TEXT)")

'اینجا دیتابیس کریپت شده رو می گیم یه جدول بسازه با دو تا ستون که از اینجاها مثل کد های sql هست و اینکتابخانه تو این کدها هیچ فرقی نداره باsql

Else

mysqlc.Initialize (File.DirInternal , "sia5.db", True , "1234test" , File.DirAssets)

'اینجا هم گفتیم اگه ساخته شده فقط تعریف کنه با پسوردی که دادیم قبل بهش

End If

curs1=sql1.ExecQuery ("SELECT Ename, Fname FROM shim")

'اینجا هم اطلاعات دیتابیس انتقال می دیم به داخل این متغیر که تعریف شده در بالا

For n=0 To curs1.RowCount -1

curs1.Position = n

list1= Array As String (curs1.GetString ("Ename") , curs1.GetString ("Fname"))

mysqlc.ExecNonQuery2 ("INSERT INTO shim VALUES (?,?)" ,list1 )

Next

' یه حلقه اینجا درست کردیم که اطلاعات دیتابیس معمولیمون رو بریزه تو دیتابیس کریپت شده و انتقال بده

curs2= mysqlc.ExecQuery ("SELECT Ename,Fname From shim")

curs2.Position = 3

label1.Text = curs2.GetString ("Fname")

label2.Text = curs2.GetString ("Ename")

End Sub

' کار تمومه و دیتابیس کریپت شده آماده هست و در اینجا برای تست که نشون می ده اطلاعات رو از داخل دیتابیس کریپت شده اونها رو رو لیبل هامون چک می کنیم همونطور که دیدی همه چیز مثل sql هست و این کتابخانه فقط در inistalize یکم فرق داره تعریفش که باید پسورد و محل فایلsqlcipher_native.zip رو نشون بدی که حتما باید این فایل رو در پوشه فایل ادد کنید از داخل خود برنامه تا کار کنه امیدوارم توضیحات کامل باشهتوجه کنید که اینجا داریم یه دیتابیس معمولی رو تبدیل به دیتابیس کریپت شده میکنیم که دیتابیس کریپت شده داخل گوشی یا ایمولاتور هست و باید درش بیارید که با برنامه eclips می شه یا با رفتن به روت و پیدا کردن دیتابیس داخل برنامه ای که ساختیدبعد می تونید ازش استفاده کنید با همین کتابخانه sqlcipher و دادن رمزتون که قبلا براش تعیین کردید

برای مشاهده بهتر این کدها بهتره اول اونهارو کپی کنید داخل برنامه اونجا درست نشون می ده

و برای برداشتن دیتابیس کریپت شده جدید باید از پوشه data/data داخل پروژه خودتون در روت گوشی یا ایملاتور اقدام کنید.

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

چون مطلب از کسی بود واس همین مطالب رو تغییر ندادم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 8 ماه بعد...

واقعا معذرت می خوام از این که تاپیک قدیمی رو بالا میارم ، اما واقعا نیاز دارم! لطف می کنید این کد ها رو در تگ کد قرار بدید و آموزش رو کمی تمیز کنید تا بشه ازش استفاده کرد و مطالعه کرد؟ و کتابخونه مورد نیاز رو پیوست کنید؟ بسیار ممنون :gol:

لینک ارسال
به اشتراک گذاری در سایت های دیگر


Sub Process_Globals

Dim mysqlc As SQLCipher

Dim sql1 As SQL

End Sub

Sub Globals

Dim label1 , label2 As Label

Dim curs1 , curs2 As Cursor

Dim list1 As List

End Sub

Sub Activity_Create(FirstTime As Boolean)

Activity.LoadLayout("layout1")

File.Copy (File.DirAssets , "sia.db", File.DirInternal , "sia.db")

sql1.Initialize (File.DirInternal , "sia.db" , False)

If File.Exists (File.DirInternal , "sia5.db")= False Then

mysqlc.Initialize (File.DirInternal , "sia5.db", True , "1234test" , File.DirAssets)

mysqlc.ExecNonQuery("CREATE TABLE shim (Ename TEXT , Fname TEXT)")

Else

mysqlc.Initialize (File.DirInternal , "sia5.db", True , "1234test" , File.DirAssets)

End If

curs1=sql1.ExecQuery ("SELECT Ename, Fname FROM shim")

For n=0 To curs1.RowCount -1

curs1.Position = n

list1= Array As String (curs1.GetString ("Ename") , curs1.GetString ("Fname"))

mysqlc.ExecNonQuery2 ("INSERT INTO shim VALUES (?,?)" ,list1 )

Next

curs2= mysqlc.ExecQuery ("SELECT Ename,Fname From shim")

curs2.Position = 3

label1.Text = curs2.GetString ("Fname")

label2.Text = curs2.GetString ("Ename")

End Sub

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ممنون ، ولی بخش اصلی درخواست من کتابخونه بود ! اون رو ندارید! تا وقتی کتابخونه نباشه کدها بدون استفاده هست!

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ممنون ، ولی بخش اصلی درخواست من کتابخونه بود ! اون رو ندارید! تا وقتی کتابخونه نباشه کدها بدون استفاده هست!

 

بفرمایید 

http://s3.picofile.com/file/8217562618/sql.zip.html

لینک ارسال
به اشتراک گذاری در سایت های دیگر

میخاستم بدونم این استفاده از کتابخونه (SQLCipher) بهتره  یا استفاده از کتابخونه آقا سپهر (برای من فقط خود دیتابیس اهمیت داره نه چیز دیگه)

و یه چیز دیگه ما با sqlcipher وقتی برنامه بالا میاد از ما پسورد میخاد؟  (این یه تیکه پسور خاستنشو من نفهمیدم)

لطفا یکی برام شفاف سازی کنه

با تشکر

 
لینک ارسال
به اشتراک گذاری در سایت های دیگر

 

میخاستم بدونم این استفاده از کتابخونه (SQLCipher) بهتره  یا استفاده از کتابخونه آقا سپهر (برای من فقط خود دیتابیس اهمیت داره نه چیز دیگه)

و یه چیز دیگه ما با sqlcipher وقتی برنامه بالا میاد از ما پسورد میخاد؟  (این یه تیکه پسور خاستنشو من نفهمیدم)

لطفا یکی برام شفاف سازی کنه

با تشکر

 

 

کسی نبود؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

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

اما با SqlCipher شما روی خود دیتابیس پسورد میزارید که توی برنامه تو یمتد Initialize پسورد رو قرار میدید و میتونید عملیات مورد نیازتون رو انجام بدید.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام

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

اما با SqlCipher شما روی خود دیتابیس پسورد میزارید که توی برنامه تو یمتد Initialize پسورد رو قرار میدید و میتونید عملیات مورد نیازتون رو انجام بدید.

یعنی کسی برنامه رو داشته باشه نمیتونه از دیتابیس استفاده کنه ؟ 

من آخرش نفهمیدم کی از ما پسورد میخاد؟ 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 4 هفته بعد...

سلام به همه دوستان 
نیاز به کمک دارم واقعا چند روزه دارم با این کتابخونه و مشتقاتش کار میکنم اصلا نمی تونم نتیجه بگیرم 

ساب رو قرار میدم 
خواهش میکنم از عزیزان اگر کسی تجربه داره راهنمایی کنه واقعا کلافه شدم 

خط شماره 4 موقع اینشیالایز کردن و دادن رمز از برنامه خارج میشه !!!!!


Msgbox("کنترل بودن فایل ","dantedbcr.db")

	If File.Exists (File.DirInternal, "dantedbcr.db")= False Then	
		
			Msgbox("نبود ","dantedbcr.db")
			mysqlc.Initialize (File.DirInternal,"dantedbcr.db",True,"12345",File.DirAssets)
		
			Msgbox("ساختم با پس 12345 ","dantedbcr.db")
	Else
			mysqlc.Initialize (File.DirInternal,"dantedbcr.db",False,"12345",File.DirAssets)
			Msgbox("بود ","dantedbcr.db")
	End If


لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 3 ماه بعد...

سلام من تمام کار های گفته شده رو انجام دادم. البته دیتا بیس رو با navi ساختم ولی وقتی روی دیتا بیس رمز میذارم نمیخونه اما وقتی جای رمزو خال میذارم و دیتارم بدون رمز میکنم نمیخونه. میشه لطفا راهنمایی کنید؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

  • 1 ماه بعد...
  • 7 ماه بعد...

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...