PDA

View Full Version : سوال: کد گذاری کردن اطلاعات و ذخیره در بانک



Roya Rayane
دوشنبه 17 تیر 1387, 09:15 صبح
سلام.
دوستان من می خوام موقعی که اطلاعاتم رو در بانک ذخیره می کنم به شکل کد گذاری شده باشه به شکلی که وقتی SQL رو باز می کنیم و ردیف ها رو نگاه می کنیم قابل خواندن نباشد(\as.@3><). و فقط از طریق برنامه ای که نوشته ایم این اطلاعات قابل مشاهده به شکل درست باشد.
ممنون.

sinpin
دوشنبه 17 تیر 1387, 09:21 صبح
سلام.
دوستان من می خوام موقعی که اطلاعاتم رو در بانک ذخیره می کنم به شکل کد گذاری شده باشه به شکلی که وقتی SQL رو باز می کنیم و ردیف ها رو نگاه می کنیم قابل خواندن نباشد(\as.@3><). و فقط از طریق برنامه ای که نوشته ایم این اطلاعات قابل مشاهده به شکل درست باشد.
ممنون.

بسيار خب، مشكل كجاست ؟

1- براي موارد كه ميبايست قابل بازگشت باشند (براي مثال متن يا عنوان يك نوشتار) از الگوريتم هاي رمزنگاري دوطرفه
2- و براي مواردي كه نيازي نيست برگشت پذير باشند (مانند كلمه عبور يا چك كردن زمان آخرين تغيير نوشتار) از توابع درهم (hash functions) استفاده كنيد.

Roya Rayane
دوشنبه 17 تیر 1387, 09:33 صبح
خیلی ممنون.
کلاسی هم داریم که کار رو راحت کند.

sinpin
دوشنبه 17 تیر 1387, 10:03 صبح
خواهش ميكنم. بله فضاي نام System.Security.Cryptography رو بررسي كنيد.
براي مثال :
http://barnamenevis.org/forum/showpost.php?p=473977

hdv212
دوشنبه 17 تیر 1387, 10:36 صبح
میتونید این وظیفه رو به عهده ی Sql server هم بذارید، که البته منطقی تر به نظر میرسه :
بدین صورت میتونید اطلاعات رو در Sql Server به صورت رمز نگاری شده با الگوریتم پسورد ذخیره نمایید :

INSERT TableName VALUES(EncryptByPassPhrase(N'MyStrongPassword', N'MyValue'))
و بدین صورت اطلاعات رو از حالت پسورد در بیارید و Select کنید :

SELECT DecryptByPassPhrase(N'MyStrongPassword',EncryptedC olumn) FROM TableName
Sql Server برای رمز نگاری اطلاعات 4 الگوریتم کلی رو ارائه میده که روش بالا راحت ترین روش هست.

Sajjad.Aghapour
دوشنبه 17 تیر 1387, 23:54 عصر
سلام.جناب وزیری من از کد شما استفاده کردم ولی یه خطا ایجاد میشه که میگه EncryptByPassPhrase یک متد ناشناخته برای sqlserver هست.داخل help ش هم سرچ کردم ولی چیزی پیدا نکرد.من از 2000 استفاده می کنم.می خواستم ببینم این فانکشن برای 2000 هم هست یا نه ؟؟؟؟

mehdi.mousavi
سه شنبه 18 تیر 1387, 00:41 صبح
سلام.جناب وزیری من از کد شما استفاده کردم ولی یه خطا ایجاد میشه که میگه EncryptByPassPhrase یک متد ناشناخته برای sqlserver هست.داخل help ش هم سرچ کردم ولی چیزی پیدا نکرد.من از 2000 استفاده می کنم.می خواستم ببینم این فانکشن برای 2000 هم هست یا نه ؟؟؟؟

سلام.
این تابع متعلق به SQL Server 2005 هستش. اما اگر فقط هدفتون Hash کردن اطلاعات باشه، میتونید در SQL Server 2000 از تابع undocumented ای تحت عنوان pwdencrypt استفاده کنید.
این تابع که یه ورودی میگیره، اطلاعات رو بصورت Hash شده بهتون بر میگردونه. برای مقایسه مقدار اصلی و Hash هم میتونید از pwdcompare استفاده کنید.

در کل، من این روش رو نمیپسندم. من ترجیم میدم اطلاعات در Business Layer با استفاده از Salt Value مورد نظر من Encrypt و سپس ذخیره بشه.

Sajjad.Aghapour
سه شنبه 18 تیر 1387, 01:11 صبح
حالا یه سوال دیگه......
فرض کنید با این روش اطلاعات رو کدگذاری کردیم.حالا اگه دیتابیس رو به وسیله یه پروژه دیگه استفاده کنیم ، به وسیله دیکد (همین روش DecryptByPassPhrase )اطلاعات رو میشه استفاده کرد یا اینکه میتونی براش نحوه کد کردن رو تعریف کنی و امکان استفاده دیگران رو برداری؟؟؟؟

yasercomeng
سه شنبه 18 تیر 1387, 02:59 صبح
يه سري به آدرس زير بزنين مقالات خوبي داره شايد به دردتون بخوره به درد من كه خورد:
اين لينك ماله رمزنگاري با استفاده از .NET و براي sqlserver نيست:
http://www.c-sharpcorner.com/Articles/ArticleListing.aspx?SectionID=1&SubSectionID=60