صبا که با کمک شما توانست مکعبش را رنگ کند، به این فکر رفته که یک کلاس طراحی کند تا کمک کند امنیت بیشتری داشته باشد. برای همین از شما میخواهد تا کلاسی با جزییات زیر برایش طراحی کنید.
فایل [Source](https://quera.ir/qbox/download/GG0j7yGD6z/Security.zip) را دانلود کرده و کلاس `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`
**نکات**
1. اسم شبکه اجتماعی همواره با حرف بزرگ انگلیسی شروع میشود.
2. دامنه فقط شامل حروف کوچک انگلیسی و عدد و کاراکتر `.` است.
3. آدرس اکانت شامل حرف یا عدد یا علامت زیرخط (`_`) است.
4. اگر بخش `[Account Name]` یا `[domain]` خالی باشد، خروجی این متد باید `false` باشد.
### مثال
**ورودی**
```
Instagram:www.instagram.com/javafan
```
**خروجی**
```
true
```
## متد secure
حال با استفاده از دو متد قبلی، میخواهیم اطلاعات مورد نظر را رمزنگاری کنیم. به این صورت که:
1. با استفاده از متد isSocialAccountInfo بخشهایی که مربوط به اطلاعات حسابهای کاربری است را پیدا کنید.
2. با استفاده از متد 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 را ببینیم.
پروژهای - واحد حفاظت و امنیت - جاوا
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.