در MySQL با استفاده از تابع DES_DECRYPT یک پرس‌وجو بنویسید که فیلد رمزنگاری‌شده password را با کلید 'secretkey' برای کاربران فعال (is_active=1) و نقش 'admin' به‌صورت متن قابل خواندن بازگرداند.

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

0.0

برای حل این مسئله از تابع DES_DECRYPT استفاده کنید؛ توجه کنید که خروجی این تابع معمولاً دادهٔ باینری است، پس باید با CAST(... AS CHAR) یا CONVERT(... USING utf8) آن را به متن تبدیل کنید. اگر مقدار رمزنگاری‌شده به‌صورت HEX ذخیره شده است، ابتدا با UNHEX آن را تبدیل کنید؛ همچنین مطمئن شوید کلیدی که می‌دهید با کلید مورد استفاده در DES_ENCRYPT مطابقت داشته باشد و دسترسی لازم برای خواندن جدول را داشته باشید.

توسط پژوهشگر در 201 روز قبل ساعت 03:22
دسته بندی ها: MySQL MySQL for beginner
arash در 201 روز قبل ساعت 06:40

توجه داشته باشید خروجی DES_DECRYPT معمولاً بایتی است و برای نمایش به عنوان متن باید با CAST(... AS CHAR) یا CONVERT(... USING utf8) تبدیل شود. اگر رمزنگاری‌شده به‌صورت HEX ذخیره شده باشد، از UNHEX(...) قبل از DES_DECRYPT استفاده کنید و کلید 'secretkey' را دقیقاً هم‌نام با کلیدی که در DES_ENCRYPT به کار رفته بدهید تا نتیجه معتبر باشد. نکته امنیتی: DES نسبت به AES ضعیف است و بهتر است از AES_ENCRYPT/AES_DECRYPT و مدیریت کلیدهای قوی استفاده کنید. برای امنیت و دسترسی، فقط به کاربرانی با is_active=1 و نقش 'admin' اجازه بازخوانی بدهید و در متن پاسخ از CAST یا CONVERT استفاده کنید تا رشته نتیجه به‌خوبی نمایش داده شود.

گزارش

1 پاسخ

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

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