2020.코딩일지

[JS][코플릿]Algorithm Basic-19_decryptCaesarcipher 본문

algorithm

[JS][코플릿]Algorithm Basic-19_decryptCaesarcipher

개발하는라푼젤 2022. 8. 14. 22:19
728x90

암호화된 문자열과 암호화 키를 입력받아 복호화된 문자열을 리턴해야 합니다.
카이사르 암호(Caesar cipher)는 평문(plaintext)을 암호키 secret개만큼 (오른쪽으로) 평행이동시켜 암호화 합니다. 복호화는 암호화된 문자열을 원래의 평문으로 복원하는 것을 말합니다.

'hello'를 secret 3으로 암호화한 경우: 'khoor'
'codestates'를 secret 11로 암호화한 경우: 'nzopdelepd'

 

 

입출력예시

더보기
//입출력예시
let output = decryptCaesarCipher('khoor', 3);
console.log(output); // --> hello

output = decryptCaesarCipher('zruog', 3);
console.log(output); // --> world

 

 

👻

 

 

 

function decryptCaesarCipher(str, secret) {
  let alpha = 'abcdefghijklmnopqrstuvwxyz';

  let result = '';
  for (let i = 0; i < str.length; i++) {
    if (str[i] === ' ') { // 공백은 그대로 둔다.
      result += ' ';
    } else {
      let asis = alpha.indexOf(str[i]);// 현재 문자의 알파벳 순서를 구한다.
      let tobe = (asis - secret + alpha.length) % alpha.length;// 복호화는 반대 방향으로 이루어기 때문에 seceret을 뺀다.
      result += alpha[tobe];
    }
  }
  return result;
}

indexOf(searchvalue, position)  특정문자 위치 찾는방법

검색된 문자열이 '첫번째'로 나타나는 위치index 리턴

없으면 -1리턴

*대소문자구분함

https://hianna.tistory.com/379

 

[Javascript] 특정 문자 위치 찾기 (indexOf 함수)

지난 번에는 특정 위치의 문자를 찾는 방법, 즉, index값을 입력으로 전달하여, 해당 위치에 있는 문자를 읽는 방법을 알아보았습니다. [Javascript] 특정 위치 문자 찾기 2가지 방법 (charAt 함수, 대괄

hianna.tistory.com


% 모듈로 연산(Modulo Operation)

나누기한 나머지값

초과하면 안될때? 다시돌아와야할때 많이 쓰는듯하다.

https://ko.khanacademy.org/computing/computer-science/cryptography/modarithmetic/a/what-is-modular-arithmetic

 

모듈로 연산이란? (개념 이해하기) | 암호학이란? | Khan Academy

 

ko.khanacademy.org

 

Comments