رمز گذاشتن بر روی Sql و ارتباط با فلش

سلام چطوری می شه روی sql lite رمز گذاشت بعد با فلش در ارتباط باشه تا کسی نتونه فاسل دیتا بیس رو باز کنه و مطالب رو داخلش ببینه، خیلی حیاتی هست ، لطفا کمک کنید
 

myfirst

Member
سلام. میشه... من اینکارو انجام دادم.الان سرم شلوغه. یکمی فرصت بدید براتون کلاساشو میذارم تو همین پست.
 

spryboy

کاربر فعال
سلام

من چند صفحه از کتاب Adobe AIR 1.5 Cookbook، بعلاوه ی لایبرری لازم رو براتون پیوست کردم، دیگه خودتون بخونید. البته به زبان انگلیسیه.

موفق باشید
 

پیوست ها

  • Creating an Encrypted Database.zip
    383.1 کیلوبایت · بازدیدها: 45
سلام

من چند صفحه از کتاب Adobe AIR 1.5 Cookbook، بعلاوه ی لایبرری لازم رو براتون پیوست کردم، دیگه خودتون بخونید. البته به زبان انگلیسیه.

موفق باشید
ممنون که جواب دادید اما این واسه فلکس است ولی من فلش استفاده می کنم :shock:
 

spryboy

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

فرقی نداره. مهم توضیحات اونه که با asـــه. شما توضیحاتش رو بخونید و همون کار رو انجام بدید. بالاخره باید کارتون رو با as انجام بدید دیگه!! من هرچی کتاب و مقاله در این مورد دارم، مثالهاشون با فلکسه. باز هم نگاه میکنم اگر چیزی داشتم که فقط از as استفاده کرده بود، براتون آپلود میکنم.
 

aliamel

کاربر فعال
به پارامتر ششم از متد ()Open از کلاس SQLConnection دقت کنید.این پارامتر شی ای از نوع ByteArray هست و دقیقا می بایست 16 کارکتر باشد.
PHP:
var conn:SQLConnection = new SQLConnection(); 
var encryptionKey:ByteArray = new ByteArray(); 
encryptionKey.writeUTFBytes("Some16ByteString"); // This technique is not secure! 
   conn.openAsync(dbFile, SQLMode.UPDATE, null, false, 1024, encryptionKey);
 
آخرین ویرایش:

aliamel

کاربر فعال
اصل قضیه همین 4 خط کد بود.باقیش دستورات sql هست که به عهده خودتون می ذارم.
 

myfirst

Member
[PHPS]


package
{




import com.adobe.air.crypto.EncryptionKeyGenerator;
import flash.utils.ByteArray;
import flash.errors.SQLError;
import flash.events.SQLEvent;
import flash.events.SQLErrorEvent;
import flash.data.SQLResult;
import flash.filesystem.*;
import flash.data.*;
public class DB
{


private var _keyGenerator:EncryptionKeyGenerator;
private var _EncryptionKey:ByteArray;
private var _MyDB:File;
private var _Conn:SQLConnection;


public function DB(Name:String = "MyEncryptedDB" , encryptionKey:String = "!@#$passwordDB$#@!")
{


_keyGenerator = new EncryptionKeyGenerator();
_EncryptionKey = _keyGenerator.getEncryptionKey(encryptionKey);
_MyDB = File.applicationDirectory.resolvePath(Name);
_Conn = new SQLConnection();
_Conn.addEventListener(SQLEvent.OPEN, OpenDB, false, 0, true);
_Conn.addEventListener(SQLErrorEvent.ERROR, ErrorHandling, false, 0, true);
_Conn.openAsync(_MyDB , "create" , null , false , 1024 , _EncryptionKey);






}


private function OpenDB(e:SQLEvent):void
{
_Conn.removeEventListener(SQLEvent.OPEN, OpenDB);
_Conn.removeEventListener(SQLErrorEvent.ERROR, ErrorHandling);
//rest of code...


}//OpenDB


private function ErrorHandling(e:SQLErrorEvent):void
{
_Conn.removeEventListener(SQLEvent.OPEN, OpenDB);
_Conn.removeEventListener(SQLErrorEvent.ERROR, ErrorHandling);
trace("error while Creating DB");
}//OpenDB


}
















}

[/PHPS]
 

پیوست ها

  • db.zip
    303.2 کیلوبایت · بازدیدها: 34
آخرین ویرایش:
آقا این حل شد ، توی پست قبلی آقای myfirst
فایلی که گذاشته واسه دانلود کار می کنه . من اشتباه کردم .با تشکر از اقای
myfirst
و دیگر دوستان
:rose:
 

پیوست ها

  • DATABASE.rar
    142.3 کیلوبایت · بازدیدها: 16
  • Capture.PNG
    Capture.PNG
    12.5 کیلوبایت · بازدیدها: 8
آخرین ویرایش:
سلام دوباره
من چند تا مشکل دارم
1. چرا وقتی که دیتا بیس رو درست می کنم با نرم افزار هایی مثل Lita یا افزونه sql manger مرورگز موزیلا دیگه نمی شود باز کرد؟ اگر نرم افزاری هست لطفا بگید.آخه من می خوام جدول ها و ستون ها رو دستی درست کنم نه با اکشن .
2._Conn.openAsync(_MyDB , "create",null,false,1024, _EncryptionKey);
می شود در مورد این خط و فاکتور هاش صحبت کنید .
این خط _MyDB دارد که نام فایل هست

"create" هست که نحوه باز کردن دیتا بیس هست که در این حالت برای ایجاد کردن هست.برای خواندن و آپ دیت کردن و یا ایجاد رکورد باید از چی استفاده کرد؟ من تو اینترنت گشتم و به فرمان های زیر رسیدم اما هر کدام اررو می ده.
air.SQLMode.UPDATE
air.SQLMode.CREATE
SQLMode.CREATE
SQLMode.UPDATE
SQLMode.READ

اما این حالت رو "create" ندیدم، می خواستم بدونم که این حالت تو فلش هست ؟ و واسه خواندن یا آپدیت چه دستوری هست؟لطفا اگر می شود یه مثال برای آپ دیت و خواندن و ایجاد رکورد بزنید.
خیلی ممنونم ، آخه آماتور هستم البته این آدرس رو من کامل خواندم و یاد گرفتم و تو فلش امتحان کردم. اما وقتی رمز می گذارم همه چیز می ریزه به هم.
http://www.i-phone.ir/forums/thread4273.html
 
آخرین ویرایش:

myfirst

Member
سلام.
جواب 1: وقتی شما کل دیتابیس رو کد کردی طبیعیه که باز نشه!!! هدف شما از کد کردنش این بوده که باز نشه دیگه!. پیشنهاد: کارتون رو بدون encryption انجام بدید، در نهایت پروژه که تموم شد همه چیزو کد کنید...
جواب 2:
flash.data​
.SQLMode.UPDATE
flash.data.SQLMode.CREATE
SQLMode.CREATE
SQLMode.UPDATE
SQLMode.READ
همه این موارد مقدارهای ثابتی از نوع رشته ای هستند. اگر شما این کد رو اجرا کنی دقیقا مقدار "create" رو برات برمیگردونه
[PHPS]
import flash.data.SQLMode;
trace(SQLMode.CREATE);

[/PHPS]

 
ممنون از جواب هایی که دادید.
سوال 1 حل شد. اما من وقتی شواختم و جدول ها رو هم ساختم . چطور
encryption کنم، آخه این کد یک عدد دیتا بیس جدید می سازه، چطور می شه یک دیتا بیس که ساخته شده رو encryption کنم.
اما سوال 2 حل نشد.نفهمیدم که چطور می شه که من یک رکورد بخونم یا ایجاد کنم.می تونید یه مثال بزنید که یک رکورد رو ایجاد و بخونم.
 

myfirst

Member
سلام. برای کار اول بجای "update" ، "create" رو چک کنید ببینید جواب میده. (پیشنهاده! در موردش مطمئن نیستم)

برای سوال دوم
[PHPS]
private var _Statement:SQLStatement;


public function AddUserData(name, family, username, password, score, pic):void
{
_Statement = new SQLStatement();
_Statement.sqlConnection = _Conn;
_Statement.clearParameters();
var query:String = "SELECT * FROM Users_TBL WHERE UserName ==" + "\"" + username + "\"";
_Statement.text = query;
_Statement.addEventListener(SQLEvent.RESULT, CheckUserExist);
_Statement.addEventListener(SQLErrorEvent.ERROR, ErrorHandling);
_Statement.execute();

function CheckUserExist(e:SQLEvent):void
{
_Statement.removeEventListener(SQLEvent.RESULT, CheckUserExist);
_Statement.removeEventListener(SQLErrorEvent.ERROR, ErrorHandling);
var query:String;
var q:SQLStatement = e.target as SQLStatement;
var result:SQLResult = q.getResult();
_Statement = new SQLStatement();
_Statement.sqlConnection = _Conn;
_Statement.clearParameters();
if (result.data == null)
{
query = "INSERT INTO Users_TBL (Name , Family , UserName , Password , PersonalPic , Description )" + "values(" + "'" + name + "'," + "'" + family + "'," + "'" + username + "'," + "'" + password + "'," + "'" + pic + "'," + "'" + score + "')";
_Statement.addEventListener(SQLEvent.RESULT, UserAddedToDB, false, 0, true);
}
else
{
query = "UPDATE Users_TBL SET" + " Name =" + "\"" + name + "\"," + " Family =" + "\"" + family + "\"," + " Password =" + "\"" + password + "\"," + " PersonalPic =" + "\"" + pic + "\"," + " Description =" + "\"" + score + "\"" + " WHERE UserName ==" + "\"" + username + "\"";
_Statement.addEventListener(SQLEvent.RESULT, UserInfoUpdated, false, 0, true);
}
_Statement.text = query;
_Statement.addEventListener(SQLErrorEvent.ERROR, ErrorHandling, false, 0, true);
_Statement.execute();
} //CkeckUserExist
} //AddUserData
[/PHPS]

این تیکه کد یه تعداد string به عنوان ورودی می گیره، بعد دیتابیس رو چک میکنه. اگه رکورد از قبل وجود داشته باشه update میشه وگرنه یه رکورد جدید به دیتابیس اضافه میشه.
 
آخرین ویرایش:

spryboy

کاربر فعال
سلام
یک دیتابیس رو فقط در زمان ایجاد کردن (create) میتونید رمزنگاری کنید. بعد از ایجاد شدن هم، دیگه نمیشه رمزنگاری اون رو حذف کرد. البته میتونید کلید رمزنگاری رو عوض کنید. اگر میخواید یک دیتابیس موجود رو رمزنگاری کنید، باید یک دیتابیس جدید و رمزنگاری شده، ایجاد کنید و داده های دیتابیس قبلی رو داخلش کپی کنید. ( با اکشن اسکریپت)

موفق باشید
 
سلام
یک دیتابیس رو فقط در زمان ایجاد کردن (create) میتونید رمزنگاری کنید. بعد از ایجاد شدن هم، دیگه نمیشه رمزنگاری اون رو حذف کرد. البته میتونید کلید رمزنگاری رو عوض کنید. اگر میخواید یک دیتابیس موجود رو رمزنگاری کنید، باید یک دیتابیس جدید و رمزنگاری شده، ایجاد کنید و داده های دیتابیس قبلی رو داخلش کپی کنید. ( با اکشن اسکریپت)

موفق باشید

ممنون که جواب دادید، میشه یک فایل فلشی بذاربد. من به صورت عملی ببینم.
 

جدیدترین ارسال ها

بالا