با استفاده از تابع AES_DECRYPT یک کوئری بنویسید که مقدار ستون encrypted_name را از جدول users با استفاده از کلید 'my_secret_key' رمزگشایی کرده و به‌صورت متن قابل‌خواندن نمایش دهد.

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

0.0

برای حل این مسئله از تابع AES_DECRYPT(encrypted_name, 'my_secret_key') استفاده کنید؛ توجه داشته باشید که این تابع مقدار باینری برمی‌گرداند، بنابراین آن را با CAST(... AS CHAR) یا CONVERT(... USING utf8mb4) به متن تبدیل کنید. همچنین مطمئن شوید که همان کلیدی را که برای AES_ENCRYPT به‌کار رفته بود استفاده می‌کنید و در صورت کلید نادرست یا داده نامعتبر مقدار NULL دریافت می‌شود؛ نمونۀ کوئری: SELECT CAST(AES_DECRYPT(encrypted_name, 'my_secret_key') AS CHAR) AS name FROM users; همچنین دسترسی SELECT روی جدول و تنظیمات رمزنگاری (مثل حالت بلاک) باید با زمان رمزگذاری مطابقت داشته باشد.

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

وقتی از AES_DECRYPT(encrypted_name, 'my_secret_key') استفاده می‌کنید توجه داشته باشید که خروجی به‌صورت باینری است و باید با CAST(... AS CHAR) یا CONVERT(... USING utf8mb4) به متن تبدیل شود تا یونیکد درست نمایش داده شود. حتماً همان کلید و تنظیمات رمزنگاری (مانند block_encryption_mode و طول کلید) را که برای AES_ENCRYPT استفاده شده بود به‌کار ببرید چون کلید یا حالت نادرست خروجی NULL یا متن نامعتبر خواهد داد. برای امنیت، کلید را در کد ثابت قرار ندهید و از مدیریت کلید مناسب و محدود کردن دسترسی SELECT به جدول استفاده کنید.

گزارش

1 پاسخ

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

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