JavaScript의 시저 암호

Muhammad Muzammil Hussain 2023년10월12일
  1. 시저 암호
  2. 시저 암호 알고리즘
  3. JavaScript의 시저 암호
JavaScript의 시저 암호

이 기사에서는 JavaScript 소스 코드에서 Caesar Cipher를 배우고 사용합니다. Caesar Cipher는 프로그래밍에서 문자열을 암호화하고 해독하는 기술입니다.

시저 암호

데이터 암호화를 위한 가장 쉽고 가장 진보된 기술 중 하나입니다. 제공된 문자열 텍스트에서 각 문자를 문자로 교체하고 변경합니다. 이는 알파벳에서 위 또는 아래로 고정된 숫자입니다.

예를 들어, 위쪽 고정 숫자 3을 정의하면 문자열의 "A""D"로 바뀌고 "B""E"로 바뀌는 식입니다.

문자를 이동하기 위해 위쪽으로 고정된 숫자 3을 정의했다고 가정해 보겠습니다. 우리의 암호화는 아래와 같이 결과를 제공할 것입니다.

original string = "hello world"
result string = "khoor zruog"

시저 암호 알고리즘

암호화해야 하는 문자열을 텍스트라고 합니다. 먼저 전체 알파벳이 26개라는 것을 알고 있으므로 0에서 25 사이의 수정 번호를 정의해야 합니다. 그런 다음 한 번에 한 문자씩 제공된 텍스트를 탐색해야 합니다.

각 인덱스에 대해 우리가 이미 결정한 하향 증가 또는 상향 증가의 규칙에 따라 각 문자를 변환합니다. 마지막으로 결과 문자열을 생성해야 합니다.

JavaScript의 시저 암호

JavaScript에서 개발자는 서버와 상호 작용하는 동안 데이터를 보호하기 위해 대부분 내장 또는 사용자 정의 암호화 기술을 사용했습니다. JavaScript 웹 애플리케이션에서는 데이터를 데이터베이스에 업로드하기 전에 대부분의 경우 데이터를 암호화해야 합니다.

Caesar Cipher 기술로 문자열을 암호화하는 데 도움이 되는 JavaScript 함수의 예를 아래에서 만들 것입니다.

예시:

const org = 'hello world';
const createMAp = (alphabets, shift) => {
  return alphabets.reduce((charsMap, currentChar, charIndex) => {
    const copy = {...charsMap};
    let ind = (charIndex + shift) % alphabets.length;
    if (ind < 0) {
      ind += alphabets.length;
    };
    copy[currentChar] = alphabets[ind];
    return copy;
  }, {});
};
const encrypt = (org, shift = 0) => {
  const alphabets = 'abcdefghijklmnopqrstuvwxyz'.split('');
  const map = createMAp(alphabets, shift);
  return org.toLowerCase().split('').map(char => map[char] || char).join('');
};

console.log('original string : ' + org)
console.log('result string :' + encrypt(org, 3))

출력:

"original string : hello world"
"result string :khoor zruog"

위의 JavaScript 소스에서 문자열 값과 고정 숫자를 인수로 전달하는 encrypt 함수를 만들었습니다. createMap() 함수를 사용하여 모든 알파벳을 정의하고 지도 객체를 생성했습니다.

createMap() 함수에서 reduce 메서드를 사용하여 객체를 생성했습니다. 고정 숫자 3의 특수 문자를 피하고 새 문자열을 생성하기 위해 toLowerCase()split() 메서드를 사용했습니다.