_رمز سزار_ یکی از سادهترین روشهای رمزنگاری است. در این روش برای رمز کردن یک رشته، یک عدد ثابت $n$ که عضو بازهی $[0, 25]$ است در نظر گرفته میشود و همهی کاراکترهای رشته، $n$ واحد به سمت جلو شیفت داده میشوند. برای مثال اگر $n$ را $1$ در نظر بگیریم، کاراکتر `A` به `B` یا کاراکتر `Z` به `A` تبدیل میشود. برای حروف کوچک انگلیسی نیز به همین ترتیب تبدیل میشوند؛ برای مثال اگر $n$ را $2$ در نظر بگیریم، کاراکتر `z` به `b` و کاراکتر `h` به `j` تبدیل میشود. در مقابل فرایند رمزنگاری فرایند رمزگشایی را داریم که برعکس فرایند رمزنگاری صورت میگیرد، یعنی هر کاراکتر $n$ واحد به سمت عقب شیفت داده میشود.
در این فرایندها، میتوان هر کاراکتر را یک عدد عضو بازهی $[0, 25]$ در نظر گرفت؛ یعنی کاراکترهای `a` و `A` با عدد `0` متناظر هستند، کاراکترهای `b` و `B` با عدد `1` متناظر هستند و ...
**توجه:** اگر $n$ بزرگتر از ۲۵ باشد، باشد، باید باقیماندهی تقسیم آن بر ۲۶ را در نظر گرفت. همچنین، **تضمین میشود** که رشتهی ورودی فقط شامل کاراکترهای `a-z` و `A-Z` است (یا ممکن است رشتهای خالی باشد).
### فرایند رمزنگاری:
$$E_n(x)=(x+n)\ mod\ 26$$
### فرایند رمزگشایی:
$$D_n(x)=(x-n)\ mod\ 26$$
# پروژه اولیه
پروژه اولیه را از
[این لینک](/contest/assignments/53486/download_problem_initial_project/182388/)
دانلود کنید.
<details class="green">
<summary> ساختار فایلها </summary>
```
crypto-graphy
├── main.js
```
</details>
<details class="violet">
<summary> راه اندازی پروژه</summary>
+ ابتدا پروژۀ اولیه را دانلود و از حالت فشرده خارج کنید.
+ سپس فایل `main.js` را در ادیتور خود باز کنید و کد مورد نظر خود را در آن پیاده سازی کنید.
</details>
# خواسته های مسئله
در این مسئله شما باید دو تابع `encrypt` و `decrypt` را پیادهسازی کنید که این دو تابع باید شرایط زیر را دارا باشند:
+ تابع `encrypt(str, n)`: این تابع، کاراکترهای رشتهی ورودی را به اندازهی n واحد به جلو شیفت میدهد.
+ تابع `decrypt(str, n)`: این تابع، کاراکترهای رشتهی ورودی را به اندازهی n واحد به عقب شیفت میدهد.
```js main.js
function encrypt(str, n) {
// TODO:
}
function decrypt(str, n) {
// TODO:
}
export { encrypt, decrypt };
```
# مثال
```js
console.log(encrypt("ZDKhdflgsdhfos", 3));
console.log(decrypt("ByffiQilfx", 20));
```
خروجی کد بالا:
```
CGNkgiojvgkirv
HelloWorld
```
# نکات
+ شما تنها مجاز به اعمال تغییرات در فایل `main.js` هستید.
+ به هنگام ثبت پاسخ تنها فایل `main.js` خود را آپلود نمایید.
ارسال پاسخ برای این سؤال
در حال حاضر شما دسترسی ندارید.