【问题标题】:Simple Javascript Encryption that's safe for URL Querying对 URL 查询安全的简单 Javascript 加密
【发布时间】:2018-12-19 01:51:49
【问题描述】:

我想编写一个简单的加密函数,它将加密输入文本并生成可解密的输出,该输出也可以安全地通过 URL 查询作为参数传输。

This site 提供了一个很好的起点,但是,一些输出包含 '=' 和 '?'在查询中作为参数发送时效果不佳。代码转载如下:

var jsEncode = {
  encode: function(s, k) {
    var enc = "";
    var str = "";
    // make sure that input is string
    str = s.toString();
    for (var i = 0; i < s.length; i++) {
      // create block
      var a = s.charCodeAt(i);
      // bitwise XOR
      var b = a ^ k;
      enc = enc + String.fromCharCode(b);
    }
    return enc;
  }
};


var code = '1';
var e = jsEncode.encode("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789@,.-", code);
console.log(e);
var d = jsEncode.encode(e, code);
console.log(d);

我将无法使用任何外部库,只能使用 vanilla js。

输入只会是电子邮件,因此这些是我需要担心的唯一字符:

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ123456789@,.-

【问题讨论】:

    标签: javascript jquery encryption


    【解决方案1】:

    encodeURIComponent() 应该是你想要的函数

    在此处查看更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent

    // encodes characters such as ?,=,/,&,:
    console.log(encodeURIComponent('?x=шеллы'));
    // expected output: "%3Fx%3D%D1%88%D0%B5%D0%BB%D0%BB%D1%8B"
    console.log(encodeURIComponent('?x=test'));
    // expected output: "%3Fx%3Dtest"
    

    【讨论】:

    • 谢谢Kapsonfire!不敢相信我忽略了这一点
    猜你喜欢
    • 2011-05-06
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多