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