رمز سزار یکی از سادهترین روشهای رمزنگاری است. در این روش برای رمز کردن یک رشته، یک عدد ثابت $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$$
پروژه اولیه
پروژه اولیه را از این لینک دانلود کنید.
ساختار فایلها
crypto-graphy
├── main.js
راه اندازی پروژه
- ابتدا پروژۀ اولیه را دانلود و از حالت فشرده خارج کنید.
- سپس فایل
main.js
را در ادیتور خود باز کنید و کد مورد نظر خود را در آن پیاده سازی کنید.
خواسته های مسئله
در این مسئله شما باید دو تابع encrypt
و decrypt
را پیادهسازی کنید که این دو تابع باید شرایط زیر را دارا باشند:
-
تابع
encrypt(str, n)
: این تابع، کاراکترهای رشتهی ورودی را به اندازهی n واحد به جلو شیفت میدهد. -
تابع
decrypt(str, n)
: این تابع، کاراکترهای رشتهی ورودی را به اندازهی n واحد به عقب شیفت میدهد.
function encrypt(str, n) {
// TODO:
}
function decrypt(str, n) {
// TODO:
}
export { encrypt, decrypt };
مثال
console.log(encrypt("ZDKhdflgsdhfos", 3));
console.log(decrypt("ByffiQilfx", 20));
خروجی کد بالا:
CGNkgiojvgkirv
HelloWorld
نکات
- شما تنها مجاز به اعمال تغییرات در فایل
main.js
هستید. - به هنگام ثبت پاسخ تنها فایل
main.js
خود را آپلود نمایید.
ارسال پاسخ برای این سؤال