Last active
November 4, 2024 09:57
-
-
Save olastor/54c78a3d29c69806c57a32eff32f191a 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
Equivalent in PHP