با استفاده از تابع AES_ENCRYPT در MySQL، جدولی به نام users ایجاد کنید که فیلد username و password_encrypted را داشته باشد، سپس یک کاربر وارد کنید و در نهایت از طریق یک پرس‌وجو رمز ذخیره‌شده را با AES_DECRYPT بازیابی و نمایش دهید.

14.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 03:26

0.0

ابتدا جدول را با فیلد password_encrypted از نوع VARBINARY یا BLOB ایجاد کنید چون AES_ENCRYPT خروجی باینری تولید می‌کند؛ برای نمونه: CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(100), password_encrypted VARBINARY(255)); سپس کاربر را با INSERT ... VALUES (..., AES_ENCRYPT('plain_password','your_key')) وارد کنید. برای بازیابی از SELECT CAST(AES_DECRYPT(password_encrypted,'your_key') AS CHAR) AS password استفاده کنید. نکات: کلید (your_key) را محرمانه نگه دارید، از نگهداری کلید به‌صورت صریح در کد پرهیز کنید و مطمئن شوید نسخه MySQL شما توابع AES_ENCRYPT/AES_DECRYPT را پشتیبانی می‌کند.

توسط پژوهشگر در 198 روز قبل ساعت 03:26
دسته بندی ها: MySQL MySQL for beginner
reyhaneh در 198 روز قبل ساعت 03:26

توجه داشته باشید که AES_ENCRYPT خروجی باینری تولید می‌کند، پس فیلد password_encrypted را از نوع VARBINARY یا BLOB تعریف کنید تا داده‌ها به‌درستی ذخیره شوند. به‌طور کلی برای ذخیره پسورد بهتر است از هش‌های یک‌طرفه مانند bcrypt یا Argon2 استفاده کنید مگر اینکه واقعاً نیاز به بازیابی پسورد داشته باشید، زیرا رمزگذاری قابل بازگشت ریسک بیشتری دارد. کلید رمزگذاری را مخفی نگه دارید و هرگز در کد صریح نگذارید — از متغیرهای محیطی یا سرویس مدیریتی کلید (KMS) استفاده کنید و دسترسی‌ها را محدود کنید. همچنین مطمئن شوید نسخه MySQL شما توابع AES_ENCRYPT/AES_DECRYPT را پشتیبانی می‌کند، در زمان بازیابی از CAST با charset مناسب استفاده کنید و همیشه از prepared statements برای جلوگیری از SQL injection بهره ببرید.

گزارش

1 پاسخ

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

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