Post Jobs

js数组转json并在后台对其解析具体实现,密码算法实例

In JavaScript, Singletons serve as a shared resource namespace which
isolate implementation code from the global namespace so as to provide a
single point of access for functions.

加密过程很简单,就是给定密钥字母x和明文字母y,密文字母是位于x行和y列的那个字母。这样就决定了加密一条消息需要与消息一样长的密钥字符串,通常,密钥字符串是密钥词的重复。
以《密码编码学与网络安全——原理与实践》中的例子来作为本文的例子。比如密钥词是deceptive,消息是“we
are discovered save yourself”,那么加密过程如下:

然后是在java后台js该字符串后 对其进行json转换。

return {

deceptivedeceptivedeceptive(密钥字符串)
wearediscoveredsaveyourself(消息)
ZICVTWQNGRZGVTWAVZHCQYGLMGJ(密文)

com.alibaba.fastjson.JSONArray
mainArray=JSON.parseArray(info.getMainparame());
     log.debug(“数组大小:”+mainArray.size());
       for(int i=0;i< mainArray.size();i++){
           QybjProduceParam p=new QybjProduceParam();
           com.alibaba.fastjson.JSONArray
paramObject=(com.alibaba.fastjson.JSONArray)mainArray.get(i);
          p.setParamename(paramObject.get(1).toString());
          p.setParamevalue(paramObject.get(2).toString());

var A = {
   xx:3,
   yy:4,
   B:function(el){

var Vigenere = {
    _strCpr: ‘abcdefghijklmnopqrstuvwxyz_12345
67890.ABCDEFGHIJKLMNOPQRSTUVWXYZ’,//可以将此字符串的顺序打乱点,或者添加更多字符
    _strKey:
function(strK,str){//生成密钥字符串,strK为密钥,str为明文或者密文
        var lenStrK = strK.length;
        var lenStr = str.length;
        if(lenStrK !=
lenStr){//如果密钥长度与str不同,则需要生成密钥字符串
            if(lenStrK <
lenStr){//如果密钥长度比str短,则以不断重复密钥的方式生成密钥字符串
                while(lenStrK < lenStr){
                    strK = strK + strK;
                    lenStrK = 2 * lenStrK;
                }
            }//此时,密钥字符串的长度大于或等于str长度
            strK =
strK.substring(0,lenStr);//将密钥字符串截取为与str等长的字符串
        }
        return strK;
    }
}

          params.add(p);
       }
       info.setParams(params);

复制代码 代码如下:

复制代码 代码如下:

您可能感兴趣的文章:

  • 小议Function.apply()之二——利用Apply的参数数组化来提高
    JavaScript程序性能
  • 使用apply方法处理数组的三个技巧[译]
  • JS解析json数据并将json字符串转化为数组的实现方法
  • 解析javascript
    数组以及json元素的添加删除
  • jquery遍历筛选数组的几种方法和遍历解析json对象
  • js/jquery解析json和数组格式的方法详解
  • 关于JS数组追加数组采用push.apply的问题
  • Jquery解析json字符串及json数组的方法
  • 使用Function.apply()的参数数组化来提高
    JavaScript程序性能的技巧
  • Android解析json数组对象的方法及Apply和数组的三个技巧

In practice, the Singleton pattern is useful when exactly one object is
needed to coordinate others across a system.

复制代码 代码如下:

大家从java代码里面 不难看出,是经过2次转换。每次都是转为JSONArray对象。

   },
   C:function(el){

图片 1

如果是一维数组就只转换一次。

var privateVariable = “Im also private”;

Vigenere.DisEncrypt = function(K,C){
    K = Vigenere._strKey(K,C);
    var lenK = K.length;
    var rlt = ”;
    var loop = 0;
    for(loop=0; loop<lenK; loop++){
        var iK = Vigenere._strCpr.indexOf(K.charAt(loop));
        if(iK==-1) return ‘密钥中包含非法字符:’ +
K.charAt(loop);       
        var iC = Vigenere._strCpr.indexOf(C.charAt(loop));
        if(iK > iC){
            rlt += Vigenere._strCpr.charAt(iC + Vigenere.lenCpr –
iK);
        }
        else{
            rlt += Vigenere._strCpr.charAt(iC – iK);
        }
    }
    return rlt;
};

js代码如下:

   },
   D:function(el){

Vigenere.lenCpr = Vigenere._strCpr.length;

想必大家在开发过程中也遇到类似问题,如果直接将js获取的数组传给后台,后台是无法区分数组的,因为js数组如果是二维的就是这样的:1,张三,23,2,李四,26

实例1:这个是最简单的单例,通过key,value的形式存储属性和方法

传统加密技术对于当今的网络安全发挥不了大作用,但每一本讲述密码学的书的开头都会率先介绍它们,因为它们是密码学的基础,是密码学的历史。几乎每一本密码学的书在讲述Vigenere密码的章节都会有这么一个《Vigenere代换表》用户讲解Vigenere密码机制:

复制代码 代码如下:

})();

Vigenere.Encrypt = function(K,P){//加密算法,K为密钥,P为明文
    K = Vigenere._strKey(K,P);
    var lenK = K.length;
    var rlt = ”;
    var loop = 0;
    for(loop=0; loop<lenK; loop++){
        var iP = Vigenere._strCpr.indexOf(P.charAt(loop));
        if(iP==-1) return ‘本算法暂时不能对字符:’ + P.charAt(loop) +
‘进行加密’;
        var iK = Vigenere._strCpr.indexOf(K.charAt(loop));
        if(iK==-1) return ‘密钥中包含非法字符:’ + K.charAt(loop);
        var i = (iP + iK) % Vigenere.lenCpr;
        rlt = rlt + Vigenere._strCpr.charAt(i);
    }
    return rlt;   
};

所以在此对其解决方法进行整理。希望能给大家带去帮助

};

密文中的第一个字母“Z”是怎么得来的?从Vigenere代换表中,以密钥字符串中的“d”为行,消息中的“w”为列的那个字母就是“Z”了。

/**
     *js数组转json
     *
     */
    function arrayToJson(o) { 
    var r = []; 
    if (typeof o == “string”) return “/”” + o.replace(/([/’/”//])/g,
“//$1”).replace(/(/n)/g, “//n”).replace(/(/r)/g, “//r”).replace(/(/t)/g,
“//t”) + “/””; 
    if (typeof o == “object”) { 
    if (!o.sort) { 
    for (var i in o) 
    r.push(i + “:” + arrayToJson(o[i])); 
    if (!!document.all &&
!/^/n?function/s*toString/(/)/s*/{/n?/s*/[native
code/]/n?/s*/}/n?/s*$/.test(o.toString)) { 
    r.push(“toString:” + o.toString.toString()); 
    } 
    r = “{” + r.join() + “}”; 
    } else { 
    for (var i = 0; i < o.length; i++) { 
    r.push(arrayToJson(o[i])); 
    } 
    r = “[” + r.join() + “]”; 
    } 
    return r; 
    } 
    return o.toString(); 
    }

  if ( !instance ) {
    instance = init();
  }

使用查表的方式多加密几次就能很轻易地总结出规律:将A~Z以0~25编号,那么加密过程就是,在代换表的第一行中找到消息字母,如“w”,然后向后移动d(即3)次,所得的字母就是密文了。如果数到末位,那么下一次移位就从头(即A)继续。
也就是说,可以将A~Z看成一个环,加密过程就是找定消息字母后,将指针往环的某个特定方向移位,次数就是密钥字母所代表的数字。这其实是一个模26的过程。
扩展一下,以上加密仅能对26个字母进行加密,而且不能区分大小写。但其实英文中除了字母外,还有标点符号,还有空格。如果考虑到大部分英文字符,那么Vigenere代换表将比较大,而且有点浪费空间的嫌疑。如果假设能被加密的字符有N个,如果把这N个字符建成一个环,那么加密过程就是模N的过程,即,C(i)=(K(i)+P(i))modN,其中K、C、P分别代表的是密钥空间、密文空间、消息(明文)空间。
网络上有人用C实现了这个加密算法,几乎都是使用查代换表的方法。虽然可以程序生成代换表,但所生成的代换表太有规律了。以下我用Javascript实现了一次,使用的是模的方法,感觉灵活度更大,占用的空间肯定也更小(时间效率尚未估计)

首先需要在js里面对数组进行转换为json格式

单例比较适用于一个对象和其他系统进行交互。

您可能感兴趣的文章:

  • JavaScript使用二分查找算法在数组中查找数据的方法
  • javascript数据结构与算法之检索算法
  • JavaScript实现SHA-1加密算法的方法
  • Javascript冒泡排序算法详解
  • Javascript堆排序算法详解
  • Javascript排序算法之计数排序的实例
  • JavaScript排序算法之希尔排序的2个实例
  • javascript笛卡尔积算法实现方法

复制代码 代码如下:

// Instance 存储一个单例实例的引用
var instance;

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章

网站地图xml地图