با استفاده از تابع DES_DECRYPT مقدار رمزنگاری‌شده در ستون password_encrypted جدول users را با کلید 'mykey123' بازگشایی و مقدار متن ساده را نمایش دهید.

4.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 01:50

0.0

برای حل این سوال از تابع DES_DECRYPT در MySQL استفاده کنید و خروجی باینری را به رشته تبدیل کنید، مثلاً: SELECT CONVERT(DES_DECRYPT(password_encrypted, 'mykey123') USING utf8) AS password_plain FROM users; اگر مقدار رمز به صورت HEX ذخیره شده باشد ابتدا از UNHEX() استفاده کنید: CONVERT(DES_DECRYPT(UNHEX(password_encrypted), 'mykey123') USING utf8). توجه داشته باشید کلید DES باید 8 بایت باشد، خروجی DES_DECRYPT باینری است و برای تولید متن خوانا باید CAST/CONVERT انجام شود و در عمل برای امنیت بهتر از الگوریتم‌های قوی‌تر مانند AES استفاده کنید.

توسط پژوهشگر در 220 روز قبل ساعت 01:50
دسته بندی ها: MySQL MySQL for beginner
arash در 220 روز قبل ساعت 11:49

کلید DES باید دقیقاً 8 بایت باشد و خروجی DES_DECRYPT به صورت دادهٔ باینری تولید می‌شود که برای نمایش متن باید با CAST/CONVERT به یک charset مانند utf8 تبدیل شود. اگر مقدار رمزگذاری‌شده به صورت HEX است، ابتدا از UNHEX استفاده کنید و سپس DES_DECRYPT را اجرا کنید. اما DES یک الگوریتم قدیمی و کم‌امنیت است و برای پسوردها مناسب نیست؛ استفاده از AES یا به‌ویژه الگوریتم‌های هش امن مانند bcrypt یا Argon2 با salt توصیه می‌شود. در نهایت به‌جای ذخیره‌سازی رمزهای رمزگذاری‌شده، از روش hashing با salt استفاده کنید تا امنیت بالاتری فراهم شود.

گزارش

1 پاسخ

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

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