علی که با کمک شما توانست مکعبش را رنگ کند، به این فکر رفته که یک کلاس طراحی کند تا کمک کند امنیت بیشتری داشته باشد. برای همین از شما میخواهد تا کلاسی با جزییات زیر برایش طراحی کنید.
فایل [source](https://quera.ir/qbox/download/bxarObe6Z0/source.py) را دانلود کرده و کلاس `Security` را ببینید. در این کلاس سه متد وجود دارد که مطابق با توضیحات دادهشده باید آنها را پیادهسازی کنید:
## متد `encrypt(self, s)`
یک رشته به عنوان ورودی این متد داده میشود و معادل رمزنگاریشده آن در خروجی برگردانده میشود.
با توجه به توضیحات زیر، معادل رمزنگاریشده ورودی را محاسبه کنید.
+ ابتدا رشته به زیررشتههای یونیفورمش تقسیم میشود و سپس مقدار رمزنگاری شده رشته اصلی از به هم چسباندن مقدار رمزنگاری شده رشتههای یونیفورم به دست میآید.
+ با در کنار هم قرار دادن وزن تمام زیررشتههای یونیفرمِ یک رشته، یک عبارت عددی به دست میآید که همان معادل رمزنگاریشده رشته ورودی است.
+ رشته یونیفرم رشتهای است که تمام کاراکترهایش با هم یکسان باشند. مانند `c` یا `aa` یا `ccc`
+ برای یک رشته یونیفورم مقدار رمزنگاری این گونه به دست میآید که به ازای هر کاراکتر مقدار رشتهای ضرب وزن آن کاراکتر در تعداد کاراکترهایی که قبلش آمده به علاوه یک را به انتهای جواب اضافه میکنیم. (این کار را از اول رشته ضروع میکنیم و تا آخر آن طی میکنیم.)
+ برای مثال مقدار رمزنگاری رشته یونیفورم `cccc` برابر یا `36912` است.
+ وزن یک کاراکتر برابر است با کد عددی آن کاراکتر منهای عدد 96. مثلا کد کاراکتر `a` برابر 97 و وزن آن برابر با $$97-96=1$$ است.
### مثال
**ورودی**
```
abcccdd
```
**خروجی**
```
1236948
```
### توضیح
کلیه زیررشتههای یونیفرم حاصل از رشته ورودی و وزن آنها در ادامه لیست شده:
| وزن | زیررشته یونیفرم |
|:------------------:|:------------------:|
| 1 | a |
| 2 | b |
| 369 | ccc |
| 48 | dd |
که با در کنار هم قرار دادن وزن آنها، به عبارت `1236948` میرسیم.
## متد `is_social_account_info(self, param)`
این متد یک رشته به عنوان پارامتر ورودی دریافت کرده و در خروجی مشخص میکند که آیا این رشته حاوی آدرس مربوط به یک اکانت شبکه اجتماعی هست یا نه.
در زمان استخدام، واحد حفاظت و امنیت، آدرس کلیه اکانتهای عمومی (public) افراد را پرسیده و به شکل زیر در اسناد ذخیره کرده است:
`[Social Network Name]:www.[domain]/[Account Name]`
برای مثال آدرس اکانت توییتر علی به این صورت ذخیره شده است:
`Twitter:www.twitter.com/javalover1990`
**نکات**
1. اسم شبکه اجتماعی همواره با حرف بزرگ انگلیسی شروع میشود.
2. دامنه فقط شامل حروف کوچک انگلیسی و عدد و کاراکتر `.` است.
3. آدرس اکانت شامل حرف یا عدد یا علامت زیرخط (`_`) است.
### مثال
**ورودی**
```
Instagram:www.instagram.com/javafan
```
**خروجی**
```
True
```
## متد `secure(self, info)`
حال با استفاده از دو متد قبلی، میخواهیم اطلاعات مورد نظر را رمزنگاری کنیم. به این صورت که:
1. با استفاده از متد `is_social_account_info` بخشهایی که مربوط به اطلاعات حسابهای کاربری است را پیدا کنید.
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.py` را ببینیم.
پروژهای - واحد حفاظت و امنیت - پایتون