首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在spring中加密和解密URL参数

在spring中加密和解密URL参数
EN

Stack Overflow用户
提问于 2017-01-09 20:27:02
回答 2查看 2.9K关注 0票数 1

我想加密URL获取参数,所有的链接将如下所示。

以html格式加密:

代码语言:javascript
复制
home.htm?ecryptParam=aajsbjabsjvyhasyayasy

实际:

代码语言:javascript
复制
home.htm?fName=samir&lName=vora

同时,在控制器类中,它将自动具有解密的值,并且我可以从请求中检索它。例如:

链接:

代码语言:javascript
复制
home.htm?ecrypt=SKJIIU86iuGkJGkJFHGBVBVn

控制器类:request.getParameter("fName");将返回samir

EN

回答 2

Stack Overflow用户

发布于 2017-01-09 20:49:46

Samir,如果您在url中传递值作为加密格式,并且您将使用请求参数作为加密格式进行检索,并且您将需要解密这些值,请参阅此链接"http://www.code2learn.com/2011/06/encryption-and-decryption-of-data-using.html“。这可能会有帮助。

票数 0
EN

Stack Overflow用户

发布于 2017-01-09 20:57:27

虽然您确实应该处理安全后端,但在JavaScript中可以很容易地实现简单的文本混淆。

下面是一个示例:

代码语言:javascript
复制
//Encrypter class
var stringEncrypter = (function() {
  function stringEncrypter() {}
  stringEncrypter.encrypt = function(str) {
    str = str.toString();
    var returnCode = [];
    for (var strIndex = 0; strIndex < str.length; strIndex++) {
      var element = str[strIndex];
      //Push with bitwise offset (or remove the bitwise offset here and in decrypt)
      returnCode.push(element.charCodeAt(0) << this.off);
    }
    //return a joined string
    return returnCode.join(this.splitter);
  };
  stringEncrypter.decrypt = function(str) {
    var list = str.split(this.splitter);
    var returnCode = "";
    for (var strIndex = 0; strIndex < list.length; strIndex++) {
      var element = list[strIndex];
      //Push with bitwise offset (or remove the bitwise offset here and in encrypt)
      returnCode += String.fromCharCode(parseInt(element) >> this.off);
    }
    return returnCode;
  };
  stringEncrypter.encryptUrl = function(url) {
    if (url.substr(url.indexOf("?") >= 0)) {
      var str = url.substr(url.indexOf("?") + 1);
      if (str.lastIndexOf("#") >= 0) {
        str = str.substr(0, str.lastIndexOf("#"));
      }
      var params = str.split("&");
      for (var paramIndex = 0; paramIndex < params.length; paramIndex++) {
        var param = params[paramIndex].split("=");
        param[0] = this.encrypt(param[0]);
        param[1] = this.encrypt(param[1]);
        params[paramIndex] = param.join("=");
      }
      url = url.substr(0, url.indexOf("?") + 1) + params.join("&") +
        (url.lastIndexOf("#") >= 0 ? url.substr(url.lastIndexOf("#")) : "");
    }
    return url;
  };
  stringEncrypter.decryptUrl = function(url) {
    if (url.substr(url.indexOf("?") >= 0)) {
      var str = url.substr(url.indexOf("?") + 1);
      if (str.lastIndexOf("#") >= 0) {
        str = str.substr(0, str.lastIndexOf("#"));
      }
      var params = str.split("&");
      for (var paramIndex = 0; paramIndex < params.length; paramIndex++) {
        var param = params[paramIndex].split("=");
        param[0] = this.decrypt(param[0]);
        param[1] = this.decrypt(param[1]);
        params[paramIndex] = param.join("=");
      }
      url = url.substr(0, url.indexOf("?") + 1) + params.join("&") +
        (url.lastIndexOf("#") >= 0 ? url.substr(url.lastIndexOf("#")) : "");
    }
    return url;
  };
  return stringEncrypter;
}());
//Bitwise offset. Completely optional
stringEncrypter.off = 2;
stringEncrypter.splitter = "|";
//Encrypt a string
console.log(stringEncrypter.encrypt("Testing123"));
//Decrypt a string
console.log(stringEncrypter.decrypt(stringEncrypter.encrypt("Testing123")));
//Decrypt a url
console.log(stringEncrypter.encryptUrl("www.test.dk?test=45"));
//Encrypt a url
console.log(stringEncrypter.decryptUrl(stringEncrypter.encryptUrl("www.test.dk?test=45")));
//Decrypt a url with #
console.log(stringEncrypter.encryptUrl("www.test.dk?test=45#title1"));
//Encrypt a url with #
console.log(stringEncrypter.decryptUrl(stringEncrypter.encryptUrl("www.test.dk?test=45#title1")));

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41548070

复制
相关文章

相似问题

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