با استفاده از تابع AES_DECRYPT در MySQL، ستون password_encrypted جدول users (که با AES_ENCRYPT و کلید 'mysecret' رمز شده) را برای همه رکوردها بازگشایی کنید و نتایج را به صورت متن قابل خواندن نمایش دهید.
2.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:30 0.0
برای حل این مسئله از تابع AES_DECRYPT استفاده کنید که مقدار باینری رمزگشده را برمیگرداند؛ برای تبدیل آن به متن خوانا از CAST(... AS CHAR) یا CONVERT(... USING utf8) استفاده کنید، مثلاً SELECT CAST(AES_DECRYPT(password_encrypted, 'mysecret') AS CHAR) AS password_plain FROM users؛ توجه داشته باشید که باید کلید دقیقاً همان کلیدی باشد که برای AES_ENCRYPT استفاده شده و در صورت بازگشایی ناموفق مقدار NULL برمیگردد؛ از ذخیرهسازی کلید در کوئریهای ثابت پرهیز کنید و در محیط تولیدی از مدیریت کلید ایمن استفاده نمایید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
به جای ذخیرهسازی پسورد به شکل قابل رمزگشایی، از hashing امن مانند bcrypt یا Argon2 استفاده کنید؛ AES_DECRYPT زمانی مناسب است که بخواهید متن اصلی داده را بازیابی کنید و کلید مدیریت شود. در نمایش نتیجه از CAST(... AS CHAR) یا CONVERT(... USING utf8) استفاده کنید و کلید دقیقاً همان کلیدی باشد که برای AES_ENCRYPT به کار رفته است؛ در غیر این صورت خروجی NULL خواهد بود. همچنین از قرار دادن کلید در کوئریهای ثابت پرهیز کنید و در محیط تولید از یک Secrets Manager یا کلید مدیریت امن استفاده کنید.
گزارش