사용자를 고유하게 식별하기 위해 고유한 사용자 ID를 제공해야 하는 로그인 시스템이 있다고 가정합니다. 그리고 명백한 보안상의 이유로 사용자 ID를 난독화하여 숫자를 추측하기가 상당히 어렵도록 합니다.
기본적으로 두 가지 함수를 작성해야 합니다.
-
인코딩(),
-
디코드()
첫 번째 함수는 숫자 입력을 기본 26 알파벳 매핑으로 변환해야 합니다. 그리고 두 번째 함수는 알파벳 매핑을 원래 숫자로 다시 변환해야 합니다.
대부분의 해싱 알고리즘이 앞뒤로 변환을 제공하지 않기 때문에 이것이 매우 실용적이지는 않지만 이 질문의 목적을 위해 우리는 그것을 고려하지 않습니다.
예를 들어 - 숫자가 31이면
encode(31) = 'ea' and, decode('ea') = 31
예시
이에 대한 코드는 -
const num = 31; const encode = num => { let res = ''; const legend = 'zabcdefghijklmnopqrstuvwxy'; while(num){ const rem = num % (legend.length); res += legend[rem]; num = (Math.floor(num / legend.length)); }; return res; }; const decode = str => { let num = 0; const legend = 'zabcdefghijklmnopqrstuvwxy'; for(let i = 0; i < str.length; i++){ const ind = legend.indexOf(str[i]); num += (ind * Math.pow(legend.length, i)); }; return num; } console.log(encode(num)); console.log(decode('ea'));
출력
콘솔의 출력은 -
ea 31