با استفاده از تابع AES_ENCRYPT در MySQL یک جدول users بسازید که ستون email و password داشته باشد، یک رکورد وارد کنید که مقدار ستون password با کلید 'mysecret' رمزنگاری شده باشد، و یک SELECT بنویسید که مقدار رمزنگاری‌شده را با AES_DECRYPT و تبدیل به متن خوانا نمایش دهد.

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

0.0

برای حل این مسئله از MySQL و توابع رمزنگاری داخلی استفاده کنید: ستون password را به صورت VARBINARY یا BLOB تعریف کنید تا خروجی باینری AES_ENCRYPT ذخیره شود، هنگام درج از AES_ENCRYPT('plain_password','mysecret') استفاده کنید و برای نمایش متن اصلی از CAST(AES_DECRYPT(password,'mysecret') AS CHAR) یا CONVERT(... USING utf8) بهره ببرید. نکات: برای دیدن مقدار رمزنگاری‌شده می‌توانید از HEX یا TO_BASE64 استفاده کنید، در محیط واقعی از نگهداری کلید به‌صورت سخت‌کد خودداری کنید و کلید را در محل امنی مدیریت کنید؛ همچنین بررسی کنید که کاربر دیتابیس اجازه اجرای توابع داخلی را داشته باشد.

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

AES_ENCRYPT/DECRYPT خروجی باینری است و با کلید مشخص رمز می‌شود، بنابراین داده رمزنگاری‌شده بدون کلید قابل بازیابی نیست. برای ذخیره پسوردها در دیتابیس به‌جای رمزنگاری معمولاً از hashing امن مانند SHA2-256 استفاده کنید تا امکان بازگشت به متن اصلی وجود نداشته باشد. اگر همچنان از AES_ENCRYPT استفاده می‌کنید، کلید را به‌طور امن مدیریت کنید و از hard-coded کردن کلید در سورس کد خودداری کنید و دسترسی‌های دیتابیس به توابع رمزنگاری را محدود کنید. برای دیدن مقدار رمزگذاری‌شده یا نمایش آن به‌شکل قابل‌خواندن می‌توانید از HEX(...) یا TO_BASE64(...) استفاده کنید.

گزارش

1 پاسخ

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

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