با استفاده از تابع DECRYPT (مثلاً AES_DECRYPT)، یک پرس‌وجوی MySQL بنویسید که ستون password رمزگذاری‌شده در جدول users را برای شناسهٔ کاربری مشخصی رمزگشایی و به‌صورت متن معمولی نمایش دهد.

15.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:56

0.0

برای حل این مسأله از تابع AES_DECRYPT که در MySQL برای رمزگشایی داده‌های رمزشده با AES به‌کار می‌رود استفاده کنید، سپس خروجی VARBINARY را با CAST یا CONVERT به CHAR تبدیل کنید (مثلاً CAST(AES_DECRYPT(password, 'your_key') AS CHAR)). در عمل پرس‌وجو باید شامل شرط WHERE برای محدود کردن به یک user_id مشخص باشد و توجه داشته باشید که کاربر اجراکننده باید مجوزهای لازم (مثل SELECT) را داشته باشد؛ همچنین از قرار دادن کلید رمز در کد به‌صورت صریح خودداری کنید و از پارامترها یا مدیریت امن کلید استفاده نمایید. در صورت استفاده از کلید نادرست تابع ممکن است NULL برگرداند؛ بنابراین بررسی NULL را در نظر بگیرید.

توسط پژوهشگر در 201 روز قبل ساعت 03:56
دسته بندی ها: MySQL MySQL for beginner
sara در 201 روز قبل ساعت 04:39

برای رمزگشایی ستون password در یک کاربر خاص با AES_DECRYPT از کلیدی امن و مدیریت‌شده استفاده کنید و هرگز کلید را به‌صورت صریح در کوئری ننویسید (ترجیحاً از پارامترهای binding یا مکانیزم‌های کلید امنیتی استفاده کنید). پس از AES_DECRYPT، نتیجه را با CAST(... AS CHAR) یا CONVERT(... USING ...) به متن معمولی تبدیل کنید. نکته مهم این است که ممکن است خروجی NULL باشد اگر کلید اشتباه باشد یا داده رمزگذاری‌شده با الگوریتم متفاوت باشد؛ بنابراین بررسی NULL را فراموش نکنید. همچنین مطمئن شوید کاربر اجرایی کوئری دسترسی SELECT دارد و از امنیت کلید در لایه کد و لاگ‌ها حفاظت کنید.

گزارش

1 پاسخ

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

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