سلام
واسم یه مشکلی پیش اومده که گفتم عنوان کنم، شاید دوستان بتونن کمک کنن:
یه دیتابیس SQL دارم که همه اطلاعاتی که قراره توش ثبت بشه، اول با الگوریتم Privatekey، رمز نگاری می شن، بعد توی دیتابیس Add می شن.
مشکل زمانی به وجود می آد که شما می خوای یه گزارش از دیتابیس بگیری و مثلاً شرطی که واسه گزارش گذاشتی اینه: Record هایی رو پیدا کن که فیلد تاریخ اون ها بزرگتر از 1387/07/22 باشه!!! چون همه اطلاعات به رمز تبدیل شدن، استفاده از <، >،like مقدور نیستش. گزارش گیری فقط زمانی جواب می ده که بخواین از "=" استفاده کنین. اون موقع می یام عبارتی که می خوام دنبالش بگردم رو هم Encrypt می کنم و بعدش دنبالش می گردم.
البته خودم یه ایده زدم و اون هم این بود که کل دیتابیس رو توی یه Grid، لود کردم بعد دونه دونه ی Cell ها رو Decrypt کردم، بعد جستجو کردم. ولی این کار وحشتناک زمان بره!!!
حالا می خوام ببینم کسی ایده ای واسه این کار نداره؟
برای نمایش حتما باید رکورد های لازم برای نمایش Decode شود. و اگر کد شده است برای نمایش حتما باید Decode شود.
برای سریع تر شدن کار بعد از جستجو یک جدول مجازی بسازید با دستور sql بعد رکورد های لازم برای نمایش به صورت غیر کد شده در جدول ساخته شده درج کنید و بعد از پایان نمایش این جدول مجازی را پاک کنید.
موفق باشید.
سلام دوست عزیز
به نظر من شما میتونید اون متنی رو که میخواین جستجو کنین رمز کنین و بعد رمز شده ی اون رو جستجو کنین اینجوری فقط یک کلمه رمز میشود و بعد رکورد مورد نظر رمز گشایی کنین
البت که این نظر منی که اصلا رمز نگاری بلد نیست بود اگه اشتباست مرا ببخش
بهترین راه اینکه فیلد مورد جستجو کد نشه و یا یک ستون اضافی که مقدار کد نشده همون ستون هست و لی بصورت قابل جستجو ایجاد بشه .
(۲۹-بهمن-۱۳۸۷, ۲۱:۲۶:۵۵)Rink8 نوشته است: [ -> ]برای نمایش حتما باید رکورد های لازم برای نمایش Decode شود. و اگر کد شده است برای نمایش حتما باید Decode شود.
برای سریع تر شدن کار بعد از جستجو یک جدول مجازی بسازید با دستور sql بعد رکورد های لازم برای نمایش به صورت غیر کد شده در جدول ساخته شده درج کنید و بعد از پایان نمایش این جدول مجازی را پاک کنید.
موفق باشید.
Rink8 عزيز، اين همون كاريه كه آخر پستم گفتم، تنها فرقش اينه كه تو روش من، اطلاعات توي Grid لود مي شن، توي روش شما، اطلاعات داخل DB لود مي شن، چون جفتش احتياج به Decrypt كردن كل Table داره، سرعتش خيلي كمه.
(۳۰-بهمن-۱۳۸۷, ۰۱:۱۵:۱۵)sav68 نوشته است: [ -> ]سلام دوست عزیز
به نظر من شما میتونید اون متنی رو که میخواین جستجو کنین رمز کنین و بعد رمز شده ی اون رو جستجو کنین اینجوری فقط یک کلمه رمز میشود و بعد رکورد مورد نظر رمز گشایی کنین
البت که این نظر منی که اصلا رمز نگاری بلد نیست بود اگه اشتباست مرا ببخش
اين كار رو خودم هم توي پستم گفتم، و اين رو هم گفتم كه اين كار فقط براي "=" جواب مي ده نه براي "<" ">" "like" و ....
(۳۰-بهمن-۱۳۸۷, ۰۳:۱۴:۰۴)hamed_Arfaee نوشته است: [ -> ]بهترین راه اینکه فیلد مورد جستجو کد نشه و یا یک ستون اضافی که مقدار کد نشده همون ستون هست و لی بصورت قابل جستجو ایجاد بشه .
الان نرم افزار هاي اتوماسيون يا حسابداري موجود در بازار، از اين روش استفاده مي كنن؟ يا اصلاً كد نمي كنن؟ يا روش سومي وجود داره؟
بهترین حالت اینه که فقط فیلدهای حساس رو کد کنی نه همه رو .
من از نرم افزارای اتوماسیون خبر ندارم .
بعد از بررسی و پرسش از چند نفر!!! کاشف به عمل اومد که نرم افزار هایی مثل اتوماسیون، حسابداری، انبار و .... هیچکدومشون، اطلاعات داخل دیتابیسشون رو Encrypt نمی کنن. اگه اطلاعات یه نرم افزار، خیلی مهم باشه، واسش یه Provider می نویسن که در حقیقت نقش لایه Business رو انجام می ده(برای اون دسته از دوستانی که نمی دونن باید بگم، نرم افزار های درست درمونی که با دیتابیس کار می کنن، شامل 3 لایه ی منطقی هستن به نام های UI, Business, DataAccess که UI رابط کاربری هستش، Business لایه ی Filtering و Validity هستش و لایه DataAccess لایه هست که مستقیم با دیتابیس کار می کنه.)
اینم ScreenShot
سلام far_222000 جان!
من يك راه حل نچندان خوب پيدا كردم:
شما گفتي كه اگه همه ي اطلاعات رو ديكريپت كني وقت زيادي طلف ميشه(در نتيجه كاربر بايد منتظر بماند ديگه ...)
من ميگم كه اگه آخرش نتونستي براي برنامت يك راه حل درست حسابي پيدا كني يعني Provider هم ننوشتي شما بيا همين كار رو انجام بده يعني همه ي ديتا ها رو ديكريپت كن اما برنامه رو رشته بندي كن يعني اون متدي كه ميخواد بياد ديتا رو از داخل ديتا بيس ديكريپت كنه رو در يك theard جداگانه قرار بده با اين وضعيت كاربر ديگه نميخواد منتظر بماند و در حالي كه برنامه داره جستجو ميكنه كاربر همچنان ميتونه از برنامه استفاده هاي ديگري انجام بدهد و شما ميتوانيد پيغام هاي مناسب رو نشان بدهيد و ...
اين فقط يك پيشنهاد بود.
من در حد اطلاعاتم آماده ي پاسخگويي هستم ...