با استفاده از تابع 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 داشته باشید.

توسط پژوهشگر در 198 روز قبل ساعت 04:18
دسته بندی ها: MySQL MySQL for beginner
arman در 198 روز قبل ساعت 04:19

برای ذخیرهٔ رمزهای ورود بهتر است از هش‌های یک‌طرفه مثل bcrypt یا Argon2 استفاده کنید چون AES قابل بازیابی است و نگهداری کلید خطراتی دارد. اگر واقعا به رمزنگاری دوطرفه نیاز دارید، کلید را خارج از دیتابیس (مثلاً در متغیرهای محیطی یا یک secret vault) نگهداری کنید و ستون رمز را از نوع VARBINARY/BLOB تعریف کنید. هنگام درج از AES_ENCRYPT(...) و برای بازگردانی از CAST(AES_DECRYPT(...) AS CHAR) استفاده نمایید و توجه کنید که خروجی AES_ENCRYPT باینری است. همچنین بسته به نسخهٔ MySQL ممکن است نیاز باشد block_encryption_mode و IV را به‌درستی تنظیم کنید تا امنیت و عدم افشای الگوها تضمین شود.

گزارش

1 پاسخ

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

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