با استفاده از تابع AES_ENCRYPT در MySQL یک جدول users بسازید که رمز عبورها را هنگام درج رکورد با کلید مشخص رمزنگاری کند و سپس با AES_DECRYPT یکی از رمزها را بازگردانید.
25.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 04:18 0.0
برای حل، یک جدول با ستونی از نوع VARBINARY برای نگهداری خروجی AES_ENCRYPT ایجاد کنید؛ هنگام INSERT از AES_ENCRYPT('plain_password','your_key') استفاده کنید و برای خواندن مقدار اصلی از SELECT CAST(AES_DECRYPT(password_column,'your_key') AS CHAR) بهره ببرید. نکات: کلید را به صورت امن نگهدارید، خروجی AES_ENCRYPT باینری است بنابراین ستون باید VARBINARY/BLOB باشد، و بسته به نسخه MySQL ممکن است نیاز به تنظیم block_encryption_mode یا استفاده از IV داشته باشید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای ذخیرهٔ رمزهای ورود بهتر است از هشهای یکطرفه مثل bcrypt یا Argon2 استفاده کنید چون AES قابل بازیابی است و نگهداری کلید خطراتی دارد. اگر واقعا به رمزنگاری دوطرفه نیاز دارید، کلید را خارج از دیتابیس (مثلاً در متغیرهای محیطی یا یک secret vault) نگهداری کنید و ستون رمز را از نوع VARBINARY/BLOB تعریف کنید. هنگام درج از AES_ENCRYPT(...) و برای بازگردانی از CAST(AES_DECRYPT(...) AS CHAR) استفاده نمایید و توجه کنید که خروجی AES_ENCRYPT باینری است. همچنین بسته به نسخهٔ MySQL ممکن است نیاز باشد block_encryption_mode و IV را بهدرستی تنظیم کنید تا امنیت و عدم افشای الگوها تضمین شود.
گزارش