-
-
Save antonioaguilar/9a7e27b8529d13ddfb9b3beda3891a5a to your computer and use it in GitHub Desktop.
Simple algorithm to quickly obfuscate a string in javascript.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* 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) { | |
// return String itself if the given parameters are invalid | |
if (!(typeof(key) === 'number' && key % 1 === 0) | |
|| !(typeof(key) === 'number' && key % 1 === 0)) { | |
return this.toString(); | |
} | |
var chars = this.toString().split(''); | |
for (var i = 0; i < chars.length; i++) { | |
var c = chars[i].charCodeAt(0); | |
if (c <= n) { | |
chars[i] = String.fromCharCode((chars[i].charCodeAt(0) + 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 String itself if the given parameters are invalid | |
if (!(typeof(key) === 'number' && key % 1 === 0) | |
|| !(typeof(key) === 'number' && key % 1 === 0)) { | |
return this.toString(); | |
} | |
return this.toString().obfs(n - key); | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment