JavaScript 로 시저 암호 구현하기

Beginner

This tutorial is from open-source community. Access the source code

소개

이 랩에서는 주어진 문자열의 각 문자를 알파벳에서 특정 위치만큼 이동시키는 간단한 암호화 알고리즘인 시저 암호 (Caesar cipher) 를 탐구해 보겠습니다. 문자열 조작과 배열 메서드를 조합하여 JavaScript 로 시저 암호를 구현하고, 이 기술을 사용하여 메시지를 암호화하고 해독하는 방법을 배웁니다. 이 랩은 JavaScript 기술을 연습하고 암호화 알고리즘에 대한 이해를 높이는 훌륭한 기회입니다.

시저 암호 (Caesar Cipher)

시저 암호를 사용하려면 다음 단계를 따르세요.

  1. 터미널/SSH 를 열고 node를 입력하여 코딩 연습을 시작합니다.
  2. 암호화 또는 해독할 문자열, 이동 값, 그리고 해독 여부를 나타내는 부울 값을 사용하여 caesarCipher 함수를 호출합니다.
  3. caesarCipher 함수는 모듈로 연산자 (%) 와 삼항 연산자 (?) 를 사용하여 올바른 암호화 또는 해독 키를 계산합니다.
  4. 스프레드 연산자 (...) 와 Array.prototype.map()을 사용하여 주어진 문자열의 문자를 반복합니다.
  5. String.prototype.charCodeAt()String.fromCharCode()를 사용하여 특수 문자, 공백 등을 무시하고 각 문자를 적절하게 변환합니다.
  6. Array.prototype.join()을 사용하여 모든 문자를 문자열로 결합합니다.
  7. 암호화된 문자열을 해독하려면 caesarCipher 함수를 호출할 때 마지막 매개변수인 decrypttrue를 전달합니다.

다음은 caesarCipher 함수의 코드입니다.

const caesarCipher = (str, shift, decrypt = false) => {
  const s = decrypt ? (26 - shift) % 26 : shift;
  const n = s > 0 ? s : 26 + (s % 26);
  return [...str]
    .map((l, i) => {
      const c = str.charCodeAt(i);
      if (c >= 65 && c <= 90)
        return String.fromCharCode(((c - 65 + n) % 26) + 65);
      if (c >= 97 && c <= 122)
        return String.fromCharCode(((c - 97 + n) % 26) + 97);
      return l;
    })
    .join("");
};

다음은 caesarCipher 함수를 사용하는 몇 가지 예입니다.

caesarCipher("Hello World!", -3); // 'Ebiil Tloia!'
caesarCipher("Ebiil Tloia!", 23, true); // 'Hello World!'

요약

축하합니다! 시저 암호 랩을 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.