首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在JavaScript中对字符串进行模糊和反模糊的最简单方法

在JavaScript中对字符串进行模糊和反模糊的最简单方法
EN

Stack Overflow用户
提问于 2013-01-22 20:42:24
回答 3查看 48.8K关注 0票数 50

我正在寻找一种在JavaScript中混淆和解混字符串的方法;我所说的加密和解密是指在安全性不成问题的情况下进行加密和解密。理想情况下,JS原生的东西(如PHP中的base64_encode()base64_decode() )可以“将字符串转换为其他东西,然后再转换回来”,而不必编写函数。

欢迎任何建议!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-22 20:43:22

您可以使用btoa()atob()btoa()类似于base64_encode()atob()类似于base64_decode()

下面是一个示例:

代码语言:javascript
复制
btoa('Some text'); // U29tZSB0ZXh0
atob('U29tZSB0ZXh0'); // Some text

记住,,这不是一种安全的保密方式。Base64是一种二进制到文本的编码方案,它通过将二进制数据转换为基数64表示来表示ASCII字符串格式的二进制数据。

票数 89
EN

Stack Overflow用户

发布于 2017-08-01 11:15:49

值得注意的是,

(![]+[])[+[]]+(![]+[])[+!+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]

计算结果为字符串"fail“,但看起来不像字符串。认真地说,把它输入到node中,你会感到惊讶的。你可以通过疯狂拼写JavaScript中的任何东西。

票数 32
EN

Stack Overflow用户

发布于 2016-12-31 00:00:36

我显然来不及给出答案,但我只是在为这个问题寻找另一个解决方案,而base64似乎太弱了。

它是这样工作的:

代码语言:javascript
复制
"abc;123!".obfs(13) // => "nopH>?@."
"nopH>?@.".defs(13) // => "abc;123!"

Code

代码语言:javascript
复制
/**
 * 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);
};
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14458819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档