美文网首页
javascript实现OneWayHash算法

javascript实现OneWayHash算法

作者: _shen | 来源:发表于2018-03-21 09:29 被阅读0次

    One-Way Hash,即单向哈希函数算法,就是无法根据求得的hash值通过简单的逆运算就得到原来的字符串。

    /**
     * One Way Hash
     * 构造初始化
     */
    function oneWayHash(){
      // init cryptTable
      let seed = 0x0010000,
          temp1,
          temp2;
    
      this.cryptTable = [];
      // 生成一个长度为0x500(合10进制数:1280)的数组cryptTable
      for (let index1 = 0;index1 < 0x100; index1++){
        for (let index2 = index1, i = 0; i < 5; i++, index2 += 0x100) {
          seed = (seed * 125 + 3) % 0x2AAAAB;
          temp1 = (seed & 0xFFFF) << 0x10;
    
          seed = (seed * 125 + 3) % 0x2AAAAB;
          temp2 = (seed & 0xFFFF);
    
          this.cryptTable[index2] = ( temp1 | temp2 );
        }
      }
    
    }
    
    /**
     * getHash
     *
     * 获取HashCode
     * str:要进行哈希计算的字符串
     * 
     */
    oneWayHash.prototype.getHash = function(str, dwHashType){
      str = str.toString();
      let seed1 = 0x7FED7FED,
          seed2 = 0xEEEEEEEE,
          len = str.length,
          char = '';
    
      for (let i = 0; i < len; i++) {
        char = str[i].toUpperCase();
        seed1 = this.cryptTable[dwHashType<<8 + char] ^ (seed1 + seed2);
        sedd2 = char + seed1 + seed2 + (seed2<<5) + 3;
      }
    
      return seed1;
    }
    

    测试

    let str = 'http://blog.csdn.net/liebert/article/details/79645315',
        hash = new oneWayHash();
    
    console.log(hash.getHash(str, 1));
    

    相关文章

      网友评论

          本文标题:javascript实现OneWayHash算法

          本文链接:https://www.haomeiwen.com/subject/zwvoqftx.html