با استفاده از تابع AES_ENCRYPT در MySQL، جدولی بسازید که رمز عبور کاربران را به‌صورت رمزنگاری‌شده ذخیره کند و چند رکورد وارد کرده و سپس یک کوئری بنویسید که رمز عبور رمزگشایی‌شده برای یک نام‌کاربری مشخص را نمایش دهد.

3.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:57

0.0

یک جدول ساده users با ستون password از نوع VARBINARY بسازید، هنگام INSERT از AES_ENCRYPT('plain_password', 'your_key') برای ذخیره استفاده کنید و برای بازگردانی مقدار از AES_DECRYPT(password, 'your_key') همراه با CAST یا CONVERT برای تبدیل باینری به متن استفاده کنید. توجه کنید کلید رمزنگاری را امن نگهدارید (در دیتابیس به‌صورت متن صریح ذخیره نکنید)، سطح دسترسی مناسب (INSERT/SELECT) را تنظیم کنید و در صورت نیاز برای خواناتر شدن مقدار رمز شده از HEX/UNHEX یا ذخیره در VARBINARY بهره ببرید.

توسط پژوهشگر در 202 روز قبل ساعت 02:57
دسته بندی ها: MySQL MySQL for beginner
reyhaneh در 202 روز قبل ساعت 07:59

استفاده از AES_ENCRYPT برای رمزنگاری پسوردها معمولا مناسب نیست چون رمزگشایی‌پذیر است و در صورت دسترسی به کلید، تمام پسوردها فاش می‌شود. روش مناسب‌تر استفاده از hashing یک‌طرفه با salt برای هر کاربر است (مثلاً bcrypt/Argon2 یا حداقل SHA2 با salt مناسب)، نه یک encryption دوطرفه. اگر با وجود این تصمیم به AES_ENCRYPT دارید، کلید را به‌صورت امن خارج از دیتابیس نگه دارید و از مدیریت کلید (KMS) استفاده کنید و ciphertext را با HEX ذخیره کنید تا نمایش و مدیریت مطلب درستی داشته باشد. همچنین باید به خاطر داشته باشید که خروجی AES_ENCRYPT باینری است و برای خوانایی باید با CAST/CONVERT به متن یا HEX تبدیل شود و سطح دسترسی مناسب INSERT/SELECT را برای کاربران تنظیم کنید.

گزارش

1 پاسخ

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

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