JavaScript Obfuscate.
/** * Obfuscate a plaintext string with a simple rotation algorithm similar to * the rot13 cipher. * @param {[type]} key rotation index between 0 and n * @param {Number} n maximum char that will be affected by the algorithm * @return {[type]} obfuscated string */ String.prototype.obfs = function(key, n = 126) { var chars = this.toString().split(''); for (var i = 0; i < chars.length; i++) { var c = chars[i].charCodeAt(0); chars[i] = String.fromCharCode((c + key) % n); } return chars.join(''); }; /** * De-obfuscate an obfuscated string with the method above. * @param {[type]} key rotation index between 0 and n * @param {Number} n same number that was used for obfuscation * @return {[type]} plaintext string */ String.prototype.defs = function(key, n = 126) { return this.toString().obfs(n - key); };
사용 방법은 아래와 같다. 시간이 없어서 코드를 그대로 긁어다 붙였지만 예상대로 동작하지 않을 수 있기 때문에 사용하기 전에 충분한 테스트가 필요하다.
"abc;123!".obfs(13) // => "nopH>?@." "nopH>?@.".defs(13) // => "abc;123!"
무슨 말인가 하면 아스키 문자에는 del 키나 backspace 키 같은 제어 문자가 포함되므로 난독화 과정에서 일부 문자가 소실될 수 있는 것이다. 아스키 코드 표는 아래 링크에 잘 정리되어 있다.
https://shaeod.tistory.com/228
댓글 없음:
댓글 쓰기