با استفاده از تابع 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 برمی‌گردد؛ از ذخیره‌سازی کلید در کوئری‌های ثابت پرهیز کنید و در محیط تولیدی از مدیریت کلید ایمن استفاده نمایید.

توسط پژوهشگر در 202 روز قبل ساعت 02:30
دسته بندی ها: MySQL MySQL for beginner
arman در 202 روز قبل ساعت 09:27

به جای ذخیره‌سازی پسورد به شکل قابل رمزگشایی، از hashing امن مانند bcrypt یا Argon2 استفاده کنید؛ AES_DECRYPT زمانی مناسب است که بخواهید متن اصلی داده را بازیابی کنید و کلید مدیریت شود. در نمایش نتیجه از CAST(... AS CHAR) یا CONVERT(... USING utf8) استفاده کنید و کلید دقیقاً همان کلیدی باشد که برای AES_ENCRYPT به کار رفته است؛ در غیر این صورت خروجی NULL خواهد بود. همچنین از قرار دادن کلید در کوئری‌های ثابت پرهیز کنید و در محیط تولید از یک Secrets Manager یا کلید مدیریت امن استفاده کنید.

گزارش

1 پاسخ

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

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