PDA

View Full Version : سوال: encrypt کردن داده



akram_raeespour
سه شنبه 28 خرداد 1387, 11:12 صبح
سلام
من یک دیتا بیس اکسس دارم که می خوام داده هاشو encrypt کنم. دنبال یک الگوریتم مناسب برای encrypt می گردم که decrypt هم داشته باشه. چون می خوام داده ها در دیتا بیس به صورت کد شده نوشته بشن و بعد در برنامه باید داده ها نشون داده بشن بتونم decode کنم داده ها رو و نشون بدم.
ولی اگر کسی دیتا بیس رو کپی کرد نتونه داده ها رو بخونه.
مثلا MD5 یک روش هست. اما decode نداره.
کسی الگوریتمی مناسب این کار نمی شناسه و کد اون رو نداره؟
با تشکر

raravaice
سه شنبه 28 خرداد 1387, 12:22 عصر
چون قرار هست که Decode بشه بهترین کار اینه که یه الگوریتم رو خودتون پیاده سازی کنید.

مثلا میتونی Base64 رو با کد Asc در مبنای 16 در چند لایه غیر مرتب ادغام کنی بعد یه لایه کلید به صورت رندم بزاری روش.

کار سختیه ولی تجربه خوبیه.

موفق باشید

مهران رسا
سه شنبه 28 خرداد 1387, 12:38 عصر
سلام .

یک راه دیگه اینه که بیای کد اسکی کاراکتر ها رو بدست بیاری و به صورت تصادفی به کد اسکی اونها مقادیری رو اضافه و یا کم کرده و در آخر اون مقدار اضافه یا کم شده رو به آخر همون رشته بچسبونی که بعد بتونی داده ها رو Decode کنی ...

راه ساده ایه ... نه ؟!! :گیج:

اوبالیت به بو
سه شنبه 28 خرداد 1387, 20:43 عصر
هم Encrypt هم Decrypt

akram_raeespour
سه شنبه 28 خرداد 1387, 22:35 عصر
سلام .

یک راه دیگه اینه که بیای کد اسکی کاراکتر ها رو بدست بیاری و به صورت تصادفی به کد اسکی اونها مقادیری رو اضافه و یا کم کرده و در آخر اون مقدار اضافه یا کم شده رو به آخر همون رشته بچسبونی که بعد بتونی داده ها رو Decode کنی ...

راه ساده ایه ... نه ؟!! :گیج:

متشکرم. روش جالب و خلاقانه ای هست.

akram_raeespour
چهارشنبه 29 خرداد 1387, 21:31 عصر
سلام
من یک الگوریتم برای کد کردن داده ها ابداع کردم و داده ها را کد شده در دیتابیس ذخیره کردم.
برای این که داده ها رو نشون بدم یک تابع برای دیکد کردن نوشتم. که داده اولی کد شده رو برمی گردونه.
حالا مشکل اینه که من می خوام این داده ها دیتابیس رو از طریق یک دستور SQL و ADODC در یک datagrid نشون بدم.
اگه می خواستم در یک textbox یک داده رو نشون بدم مشکلی نبود. اما من تابعی که برای دیکد نوشتم نمی تونم در دستور SQL استفاده کنم. آیا روشی وجود داره که من در دیتا گرید تنظیم کنم که برای یک فیلد به جای نشون دادن مقدار فیلد، مقدار خروجی تابع دیکد رو برای اون فیلد نشون بده.
یا دیتا گرید خاصی برای این کار وجود داره.
یا روش دیگه ای که بشه تابع رو در SQL فراخوانی کرد. (البته این طوری تابع باید به زبان SQL نوشته بشه که چون تابع پیچیده است مشکل میشه!)

aminkk
پنج شنبه 30 خرداد 1387, 16:58 عصر
كاربرد اين كار در چيست؟

akram_raeespour
پنج شنبه 30 خرداد 1387, 19:57 عصر
کاربردش اینه که اگه کسی دیتابیس رو کپی کرد از داده ها سردر نمی آره. مگر این که از برنامه استفاده کنه.
کسی جواب سوال منو نمی دونه؟
آیا سوال من مبهمه؟

raravaice
پنج شنبه 30 خرداد 1387, 20:04 عصر
آیا روشی وجود داره که من در دیتا گرید تنظیم کنم که برای یک فیلد به جای نشون دادن مقدار فیلد، مقدار خروجی تابع دیکد رو برای اون فیلد نشون بده.

زمانی که داره دیتاگرید Bind میشه باید این تغییرات رو اعمال کنید.

موفق باشید

vbhamed
جمعه 31 خرداد 1387, 14:20 عصر
سلام

من نمونش رو تو بانك اكسس انجام دادم و اگر Query رو ببيني مي توني اطلاعات كد شده و دي كد شده رو داشته باشي و همونجا وارد كني و نتيجه رو ببيني
اما Query كه توش تابع فراخواني شده باشه تو ويژوال بيسيك قابل استفاده نيست

حالا من اين رو مي زارم شايد بتوني ازش ايده بگيري
مي توني بانكت رو موقع استفاده از داخل اكسس فراخواني كني و اطلاعات خروجي رو در يك جدول ديگه بنويسي و بعد تو ويژوال بيسيك استفاده كني

1 - از داخل اكسس يك ماژول در بانك ايجاد كن و تابع عمومي ديكدر رو توش بنويس كه يك ورودي بگيره و پس از ديكد به عنوان خروجي بر گردونه
2 - يك Query بنويس و فيلدها رو به اون تابع بفرست و نتيجه رو نشون بده
يك بانك نمونه برات مي زارم، تو اين نمونه تابع Decode كه توي ماژول تعريف شده، توي qry_Table1 استفاده شده و نتيجه Query اطلاعات جدول Table1 به صورت ديكد شده هست

ضمنا MD5 يك HASH است نه Encoder كه بشه Decode كرد، يعني يه طورايي مثل Checksum عمل مي كنه و به همين دليل چيزي نيست كه قابل برگشت باشه، و فقط يك كد جهت اطمينان از صحت و عدم تغيير داده هاست

ASKaffash
شنبه 01 تیر 1387, 08:47 صبح
سلام
من یک الگوریتم برای کد کردن داده ها ابداع کردم و داده ها را کد شده در دیتابیس ذخیره کردم.
برای این که داده ها رو نشون بدم یک تابع برای دیکد کردن نوشتم. که داده اولی کد شده رو برمی گردونه.
حالا مشکل اینه که من می خوام این داده ها دیتابیس رو از طریق یک دستور SQL و ADODC در یک datagrid نشون بدم.
اگه می خواستم در یک textbox یک داده رو نشون بدم مشکلی نبود. اما من تابعی که برای دیکد نوشتم نمی تونم در دستور SQL استفاده کنم. آیا روشی وجود داره که من در دیتا گرید تنظیم کنم که برای یک فیلد به جای نشون دادن مقدار فیلد، مقدار خروجی تابع دیکد رو برای اون فیلد نشون بده.
یا دیتا گرید خاصی برای این کار وجود داره.
یا روش دیگه ای که بشه تابع رو در SQL فراخوانی کرد. (البته این طوری تابع باید به زبان SQL نوشته بشه که چون تابع پیچیده است مشکل میشه!)

سلام
اگر بانک SQLServer است باید منطق Encrypt را به UDF درون SQL تبدیل کنی که البته باید مواظب UDF در بانک باشی.
اگر بانک شما فاکس است FoxSQL توابع خارجی را پشتیبانی میکند
اگر بانک شما اکسس است توابع داخلی VB را پشتیبانی میکند ببین میتوانی در یک خط دستور تابع را با توابع داخلی VB شبیه سازی کنی !