رمز‌نگاری


رمز سزار یکی از ساده‌ترین روش‌های رمزنگاری است. در این روش برای رمز کردن یک رشته، یک عدد ثابت nn که عضو بازه‌ی [0,25][0, 25] است در نظر گرفته می‌شود و همه‌ی کاراکترهای رشته، nn واحد به سمت جلو شیفت داده می‌شوند. برای مثال اگر nn را 11 در نظر بگیریم، کاراکتر A به B یا کاراکتر Z به A تبدیل می‌شود. برای حروف کوچک انگلیسی نیز به همین ترتیب تبدیل می‌شوند؛ برای مثال اگر nn را 22 در نظر بگیریم، کاراکتر z به b و کاراکتر h به j تبدیل می‌شود. در مقابل فرایند رمزنگاری فرایند رمزگشایی را داریم که برعکس فرایند رمزنگاری صورت می‌گیرد، یعنی هر کاراکتر nn واحد به سمت عقب شیفت داده می‌شود. در این فرایندها، می‌توان هر کاراکتر را یک عدد عضو بازه‌ی [0,25][0, 25] در نظر گرفت؛ یعنی کاراکترهای a و A با عدد 0 متناظر هستند، کاراکترهای b و B با عدد 1 متناظر هستند و ...

توجه: اگر nn بزرگ‌تر از ۲۵ باشد، باشد، باید باقی‌مانده‌ی تقسیم آن بر ۲۶ را در نظر گرفت. همچنین، تضمین می‌شود که رشته‌ی ورودی فقط شامل کاراکترهای a-z و A-Z است (یا ممکن است رشته‌ای خالی باشد).

فرایند رمزنگاری:🔗

En(x)=(x+n) mod 26E_n(x)=(x+n)\ mod\ 26

فرایند رمزگشایی:🔗

Dn(x)=(xn) mod 26D_n(x)=(x-n)\ mod\ 26

پروژه اولیه🔗

پروژه اولیه را از این لینک دانلود کنید.

ساختار فایل‌ها
crypto-graphy
├── main.js
Plain text
راه اندازی پروژه
  • ابتدا پروژۀ اولیه را دانلود و از حالت فشرده خارج کنید.
  • سپس فایل main.js را در ادیتور خود باز کنید و کد مورد نظر خود را در آن پیاده سازی کنید.

خواسته های مسئله🔗

در این مسئله شما باید دو تابع encrypt و decrypt را پیاده‌سازی کنید که این دو تابع باید شرایط زیر را دارا باشند:

  • تابع encrypt(str, n): این تابع، کاراکترهای رشته‌ی ورودی را به اندازه‌ی n واحد به جلو شیفت می‌دهد.

  • تابع decrypt(str, n): این تابع، کاراکترهای رشته‌ی ورودی را به اندازه‌ی n واحد به عقب شیفت می‌دهد.

extensionFromNamemain.js
function encrypt(str, n) {
    // TODO:
}

function decrypt(str, n) {
    // TODO:
}

export { encrypt, decrypt };
JavaScript

مثال🔗

console.log(encrypt("ZDKhdflgsdhfos", 3));

console.log(decrypt("ByffiQilfx", 20));
JavaScript

خروجی کد بالا:

CGNkgiojvgkirv

HelloWorld
Plain text

نکات🔗

  • شما تنها مجاز به اعمال تغییرات در فایل main.js هستید.
  • به هنگام ثبت پاسخ تنها فایل main.js خود را آپلود نمایید.