PDA

View Full Version : مبتدی: base64



hooooman
شنبه 29 شهریور 1399, 23:07 عصر
سلام
سوال ابتدایی دارم درباره base64
فرض کنید رمز عبور رو با base64.encode کد میکنم و تو دیتابیس ذخیره می کنم
حالا اگر کسی به دیتابیس دسترسی داشته باشه خب میتونه با base64.decode یه امتحانی بکنه و رمز عبور رو ببینه
میشه راهنمایی بفرمایید؟

plague
یک شنبه 30 شهریور 1399, 00:21 صبح
رمز عبور رو باید با متد های غیر قابل برگشت مثل md5 یا sha1 انکریپت کنی

base64 برای اینه که فایل های باینتری (مثل عکس و فایل صوتی و ... ) رو تبدیل کنی به متن حالا به هر دلیلی
استفاده های دیگری هم میشه کرد ولی خب برای اونکاره و به درد پسورد نمیخوره

the king
یک شنبه 30 شهریور 1399, 01:33 صبح
سلام
سوال ابتدایی دارم درباره base64
فرض کنید رمز عبور رو با base64.encode کد میکنم و تو دیتابیس ذخیره می کنم
حالا اگر کسی به دیتابیس دسترسی داشته باشه خب میتونه با base64.decode یه امتحانی بکنه و رمز عبور رو ببینه
میشه راهنمایی بفرمایید؟

خود رمز عبور رو ذخیره نمی کنید، hash اون رمز مثلا MD5 یا SHA512 اش رو ذخیره می کنید. hash توسط تابع یکطرفه تولید میشه، میتونه ورودی رو به خروجی تبدیل کنه ولی دیگه نمیتونه از خروجی ورودی رو باز تولید کنه، برای همین از hash استفاده میشه. با ذخیره کردن hash صرفا می توانید بررسی کنید که الان رمز عبوری که کاربر برای Login کردن وارد می کنه درست هست یا نه، اینطوری حتی اگه دیتابیس hash ها لو بره، برای رمز عبور های سخت و نامتعارف شناسایی رمز عبور از روی hash دشوار میشه.
اون base64 رو می توانید در صورت لزوم برای تبدیل hash ای که حالت باینری داره به معادل متنی اش بکار ببرید ولی به تنهایی کارکردی نداره.
base64 دو طرفه است و نمیتونه جایگزین hash ها باشه.

hooooman
دوشنبه 31 شهریور 1399, 00:24 صبح
سلام مجدد
ممنون از جواب
بله در مورد رمز hash کردن منطقه
ولی اگر مثلا ایمیل بخواد بصورت کد شده ذخیره بشه اون موقع نیاز به انکد و دیکد هستش
میشه راهنمایی کنین؟

the king
دوشنبه 31 شهریور 1399, 12:13 عصر
سلام مجدد
ممنون از جواب
بله در مورد رمز hash کردن منطقه
ولی اگر مثلا ایمیل بخواد بصورت کد شده ذخیره بشه اون موقع نیاز به انکد و دیکد هستش
میشه راهنمایی کنین؟
شما در مورد رمز عبور سوال کردید، نه ذخیره سازی ایمیل. برای هر نوع اطلاعات حساسی چه متن ایمیل باشه و چه نباشه از متد های رمزنگاری (Encryption) استفاده میشه نه کد گذار هایی (Encoder) مثل base64. کار base64 اینه که یک داده باینری رو که مجموعه ای از بایت ها است بصورت یک رشته متنی درمیاره تا بصورت متن قابل تبادل باشه، مثلا در یک متن ایمیل HTML نمیشه چیزی جز متن قرار داد، برای همین داده باینری، فرضا داده های یک تصویر یا یک فایل فشرده zip رو بصورت base64 درج می کنند. وگرنه هدف base64 مخفی کردن داده نیست.

تفاوت بزرگی بین روش های Encoding و Encryption هست، موقع رمزنگاری کلید دلخواه تون به عنوان ورودی مشخص میشه که روی خروجی تاثیر داره و برای رمز گشایی داده های رمزنگاری شده هم کلید لازمه، برای همین امنیت دارن. base64 صرفا Encoding میکنه و کلید نداره.
وقتی بخواهید یک داده ای فرضا متن "barnamenevis"رو با یکی از روش های رمزنگاری مثل AES و RSA و Twofish رمزی کنید مشخص می کنید که کلید رمزنگاری فلان داده است، مادامی که کسی از اون کلید شما اطلاعاتی نداشته باشه و کلید رو نداشته باشه، داده های رمزی شده برایش قابل رمزگشایی نیست. اگر ندونه که با چه روشی رمزنگاری اش کرده اید که دیگه کارش از اون هم سخت تر میشه.