صبا که با کمک شما توانست مکعبش را رنگ کند، به این فکر رفته که یک کلاس طراحی کند تا کمک کند امنیت بیشتری داشته باشد. برای همین از شما میخواهد تا کلاسی با جزییات زیر برایش طراحی کنید.
فایل Source را دانلود کرده و کلاس Security
را ببینید. در این کلاس سه متد وجود دارد که مطابق با توضیحات دادهشده باید آنها را پیادهسازی کنید:
متد encrypt
یک رشته به عنوان ورودی این متد داده میشود و معادل رمزنگاریشده آن در خروجی برگردانده میشود.
با توجه به توضیحات زیر، معادل رمزنگاریشده ورودی را محاسبه کنید.
- رشته یونیفرم رشتهای است که تمام کاراکترهایش با هم یکسان باشند. مانند
c
یاaa
یاccc
- وزن یک کاراکتر برابر است با کد عددی آن کاراکتر منهای عدد 96. مثلا کد کاراکتر
a
برابر 97 و وزن آن برابر با $$97-96=1$$ است. - ابتدا رشته به زیررشتههای یونیفورمش تقسیم میشود و سپس مقدار رمزنگاری شده رشته اصلی، از به هم چسباندن مقدار رمزنگاری شده رشتههای یونیفورم به دست میآید.
- با در کنار هم قرار دادن وزن تمام زیررشتههای یونیفرمِ یک رشته، یک عبارت عددی به دست میآید که همان معادل رمزنگاریشده رشته ورودی است.
- برای مثال مقدار رمزنگاری رشته یونیفورم
cccc
که تشکیل شده از چهار زیررشته یونیفرمc
وcc
وccc
وcccc
است و مقدار رمزنگاری هر یک از این زیررشتهها، برابر با مجموع وزن کاراکترهایشان است که به ترتیب میشود 3 و 6 و 9 و 12 و در نهایت خواهیم داشت36912
.
مثال
ورودی
abcccdd
خروجی
1236948
توضیح
کلیه زیررشتههای یونیفرم حاصل از رشته ورودی و وزن آنها در ادامه لیست شده:
وزن | زیررشته یونیفرم |
---|---|
1 | a |
2 | b |
369 | ccc |
48 | dd |
که با در کنار هم قرار دادن وزن آنها، به عبارت 1236948
میرسیم.
متد isSocialAccountInfo
این متد یک رشته به عنوان پارامتر ورودی دریافت کرده و در خروجی مشخص میکند که آیا این رشته حاوی آدرس مربوط به یک اکانت شبکه اجتماعی هست یا نه. در زمان استخدام، واحد حفاظت و امنیت، آدرس کلیه اکانتهای عمومی (public) افراد را پرسیده و به شکل زیر در اسناد ذخیره کرده است:
[Social Network Name]:www.[domain]/[Account Name]
برای مثال آدرس اکانت توییتر علی به این صورت ذخیره شده است:
Twitter:www.twitter.com/javalover1990
نکات
- اسم شبکه اجتماعی همواره با حرف بزرگ انگلیسی شروع میشود.
- دامنه فقط شامل حروف کوچک انگلیسی و عدد و کاراکتر
.
است. - آدرس اکانت شامل حرف یا عدد یا علامت زیرخط (
_
) است. - اگر بخش
[Account Name]
یا[domain]
خالی باشد، خروجی این متد بایدfalse
باشد.
مثال
ورودی
Instagram:www.instagram.com/javafan
خروجی
true
متد secure
حال با استفاده از دو متد قبلی، میخواهیم اطلاعات مورد نظر را رمزنگاری کنیم. به این صورت که:
- با استفاده از متد isSocialAccountInfo بخشهایی که مربوط به اطلاعات حسابهای کاربری است را پیدا کنید.
- با استفاده از متد encrypt بخش Account Name را رمزنگاری کنید.
مثال
ورودی
ورودی یک متن است که شامل اطلاعات یک کارمند از جمله اطلاعات صفر یا چند حساب کاربری وی در شبکههای اجتماعی مختلف است.
FirstName:Ali, LastName:Alavi, BirthDate:1990/02/02 Gender:male Instagram:www.instagram.com/aalavi Degree:Master Twitter:www.twiter.com/alaviii imdb:www.imdb.com/alavi
خروجی
FirstName:Ali, LastName:Alavi, BirthDate:1990/02/02 Gender:male Instagram:www.instagram.com/12121229 Degree:Master Twitter:www.twiter.com/11212291827 imdb:www.imdb.com/alavi
آنچه باید آپلود کنید:
یک فایل zip که وقتی آن را باز میکنیم، فقط فایل Security.java را ببینیم.
ارسال پاسخ برای این سؤال