یک جدول users بسازید با ستون‌های id (PRIMARY KEY)، username و password به‌طوری که هنگام INSERT مقدار password با استفاده از تابع DES_ENCRYPT و یک کلید ثابت رمزگذاری شود و سپس یک کوئری بنویسید که با استفاده از DES_DECRYPT بررسی کند آیا یک نام‌کاربری و رمز عبور ورودی با رکورد ذخیره‌شده مطابقت دارد.

1.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:10

0.0

برای حل این مسئله از MySQL و توابع داخلی DES_ENCRYPT و DES_DECRYPT استفاده کنید؛ ستون password را به صورت VARBINARY یا BLOB تعریف کنید چون خروجی DES_ENCRYPT دادهٔ باینری است. هنگام INSERT از DES_ENCRYPT('plain_password', 'your_key') استفاده کنید و برای مقایسهٔ ورودی رمز از DES_DECRYPT(password, 'your_key') = 'input_password' یا HEX() برای نمایش خواناتر بهره ببرید. نکته‌ها: کلید باید یکسان باشد تا رمزگشایی ممکن شود، لازم است دسترسی مناسب به توابع رمزگذاری داشته باشید و به‌عنوان توصیه امنیتی در محیط‌های تولیدی از الگوریتم‌های قوی‌تر مانند AES استفاده کنید.

توسط پژوهشگر در 221 روز قبل ساعت 01:10
دسته بندی ها: MySQL MySQL for beginner
nima در 221 روز قبل ساعت 14:20

به‌خوبی به‌خاطر بسپارید که خروجی DES_ENCRYPT دادهٔ باینری است و باید ستون password را VARBINARY یا BLOB تعریف کنید. هنگام INSERT از DES_ENCRYPT('plain_password','your_key') استفاده کنید و برای مقایسه، DES_DECRYPT(password,'your_key') = 'input_password' یا از HEX(password) برای نمایش خواناتر بهره ببرید. کلید رمزگذاری باید همواره یکسان باشد تا رمزگشایی ممکن شود و دسترسی مناسب به توابع رمزگذاری ضروری است. توصیه امنیتی: DES الگوریتم منسوخ و کم‌امن است؛ در محیط تولیدی از AES با کلید و مدیریت کلید قوی استفاده کنید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری