Explorar o código

Merge branch 'master' of http://192.168.1.41:3000/SmartCost/YangHuCost

chenshilong %!s(int64=3) %!d(string=hai) anos
pai
achega
e181fb7624

+ 1 - 0
config/gulpConfig.js

@@ -104,6 +104,7 @@ module.exports = {
         'public/web/number_util.js',
         'public/web/sheet/sheet_common.js',
         'public/web/slideResize.js',
+        'public/web/sm3.js',
        // 'lib/ztree/*.js',
        // 'lib/spreadjs/views/gc.spread.views.dataview.10.0.0.min.js',
        // "lib/spreadjs/views/common/gc.spread.common.10.0.0.min.js",

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 1 - 0
public/web/sm3.js


+ 1 - 0
web/building_saas/main/html/main.html

@@ -2120,6 +2120,7 @@
     <script type="text/javascript" src="/public/web/url_util.js"></script>
     <script type="text/javascript" src="/public/web/number_util.js"></script>
     <script type="text/javascript" src="/public/web/slideResize.js"></script>
+    <script type="text/javascript" src="/public/web/sm3.js"></script>
     <!-- JS. -->
     <!--<script src="/lib/popper/popper.min.js"></script>
     <script src="/lib/bootstrap/bootstrap.min.js"></script>-->

+ 7 - 241
web/building_saas/standard_interface/export/shandong_common.js

@@ -1,4 +1,5 @@
 // INTERFACE_EXPORT =,必须这么写,这样才能在导出时动态加载脚本后,覆盖前端代码
+
 // 参考广东中山导出接口
 INTERFACE_EXPORT = (() => {
     "use strict";
@@ -288,7 +289,8 @@ INTERFACE_EXPORT = (() => {
         let softwareNumHolder = userCompany; // userCompany是在main界面上已经有现成的(类似userAccount, userID)
         let hardID = UTIL.generateHardwareId();
         let [cpuId, diskId, macId] = hardID.split(";");
-        const orgScretInfoStr = `SoftwareName=纵横公路工程造价管理软件,SoftwareVer=V${VERSION},SoftwareCompany=珠海纵横创新软件有限公,SoftwareNumber=${userID},HardNumber=${diskId},MacAddress=${macId},SoftwareNumberHolder=${softwareNumHolder}`
+        // const orgScretInfoStr = `SoftwareName=纵横公路工程造价管理软件,SoftwareVer=V${VERSION},SoftwareCompany=珠海纵横创新软件有限公司,SoftwareNumber=${userID},HardNumber=${diskId},MacAddress=${macId},SoftwareNumberHolder=${softwareNumHolder}`
+        const orgScretInfoStr = `SoftwareName=纵横公路工程造价管理软件,SoftwareVer=V${VERSION},SoftwareCompany=珠海纵横创新软件有限公司,SoftwareNumber=${window.btoa(userID)},HardNumber=${window.btoa(diskId)},MacAddress=${window.btoa(macId)},SoftwareNumberHolder=${softwareNumHolder}`
         let scretInfo = sm3Digest(orgScretInfoStr);
         const attrs = [{
             name: "Name",
@@ -2410,252 +2412,16 @@ INTERFACE_EXPORT = (() => {
       }, ];
     }
 
-    // 山东需求,要有密文校验信息(SM3算法)
-    function SM3() {
-        if (!(this instanceof SM3)) {
-            return new SM3();
-        }
-     
-        this.reg = new Array(8);
-        this.chunk = [];
-        this.size = 0;
-     
-        this.reset();
-    }
-     
-    SM3.prototype.reset = function() {
-        this.reg[0] = 0x7380166f;
-        this.reg[1] = 0x4914b2b9;
-        this.reg[2] = 0x172442d7;
-        this.reg[3] = 0xda8a0600;
-        this.reg[4] = 0xa96f30bc;
-        this.reg[5] = 0x163138aa;
-        this.reg[6] = 0xe38dee4d;
-        this.reg[7] = 0xb0fb0e4e;
-        this.chunk = [];
-        this.size = 0;
-    };
-     
-    /**
-     * 字符串转byte数组
-     */
-    SM3.prototype.strToBytes= function (s) {
-      var ch, st, re = [];
-      for (var i = 0; i < s.length; i++ ) {
-        ch = s.charCodeAt(i);  
-        st = [];                 
-        do {
-          st.push( ch & 0xFF );  
-          ch = ch >> 8;          
-        }
-        while ( ch );
-        re = re.concat( st.reverse() );
-      }
-      return re;
-    };
-     
-    SM3.prototype.write = function(msg) {
-        var m = (typeof msg === 'string') ? this.strToBytes(msg) : msg;
-        this.size += m.length;
-        var i = 64 - this.chunk.length;
-        if (m.length < i) {
-            this.chunk = this.chunk.concat(m);
-            return;
-        }
-     
-        this.chunk = this.chunk.concat(m.slice(0, i));
-        while (this.chunk.length >= 64) {
-            this._compress(this.chunk);
-            if (i < m.length) {
-                this.chunk = m.slice(i, Math.min(i + 64, m.length));
-            } else {
-                this.chunk = [];
-            }
-            i += 64;
-        }
-    };
-     
-    /**
-     * 计算hash值
-     */
-    SM3.prototype.sum = function(msg, enc) {
-        if (msg) {
-            this.reset();
-            this.write(msg);
-        }
-     
-        this._fill();
-        for (var i = 0; i < this.chunk.length; i += 64) {
-            this._compress(this.chunk.slice(i, i + 64));
-        }
-     
-        var digest = null;
-        if (enc == 'hex') {
-            digest = "";
-            for (var i = 0; i < 8; i++) {
-                digest += this.reg[i].toString(16);
-            }
-        } else {
-            var digest = new Array(32);
-            for (var i = 0; i < 8; i++) {
-                var h;
-                h = this.reg[i];
-                digest[i * 4 + 3] = (h & 0xff) >>> 0;
-                h >>>= 8;
-                digest[i * 4 + 2] = (h & 0xff) >>> 0;
-                h >>>= 8;
-                digest[i * 4 + 1] = (h & 0xff) >>> 0;
-                h >>>= 8;
-                digest[i * 4] = (h & 0xff) >>> 0;
-            }
-        }
-     
-        this.reset();
-        return digest;
-    };
-     
-    SM3.prototype._compress = function(m) {
-        if (m < 64) {
-            console.error("compress error: not enough data");
-            return;
-        }
-        var w = this._expand(m);
-        var r = this.reg.slice(0);
-        for (var j = 0; j < 64; j++) {
-            var ss1 = this._rotl(r[0], 12) + r[4] + this._rotl(this._t(j), j)
-            ss1 = (ss1 & 0xffffffff) >>> 0;
-            ss1 = this._rotl(ss1, 7);
-     
-            var ss2 = (ss1 ^ this._rotl(r[0], 12)) >>> 0;
-     
-            var tt1 = this._ff(j, r[0], r[1], r[2]);
-            tt1 = tt1 + r[3] + ss2 + w[j + 68];
-            tt1 = (tt1 & 0xffffffff) >>> 0;
-     
-            var tt2 = this._gg(j, r[4], r[5], r[6]);
-            tt2 = tt2 + r[7] + ss1 + w[j];
-            tt2 = (tt2 & 0xffffffff) >>> 0;
-     
-            r[3] = r[2];
-            r[2] = this._rotl(r[1], 9);
-            r[1] = r[0];
-            r[0] = tt1;
-            r[7] = r[6]
-            r[6] = this._rotl(r[5], 19);
-            r[5] = r[4];
-            r[4] = (tt2 ^ this._rotl(tt2, 9) ^ this._rotl(tt2, 17)) >>> 0;
-        }
-     
-        for (var i = 0; i < 8; i++) {
-            this.reg[i] = (this.reg[i] ^ r[i]) >>> 0;
-        }
-    };
-     
-    SM3.prototype._fill = function() {
-        var l = this.size * 8;
-        var len = this.chunk.push(0x80) % 64;
-        if (64 - len < 8) {
-            len -= 64;
-        }
-        for (; len < 56; len++) {
-            this.chunk.push(0x00);
-        }
-     
-        for (var i = 0; i < 4; i++) {
-            var hi = Math.floor(l / 0x100000000);
-            this.chunk.push((hi >>> ((3 - i) * 8)) & 0xff);
-        }
-        for (var i = 0; i < 4; i++) {
-            this.chunk.push((l >>> ((3 - i) * 8)) & 0xff);
-        }
-    };
-     
-    SM3.prototype._expand = function(b) {
-        var w = new Array(132);
-        for (var i = 0; i < 16; i++) {
-            w[i] = b[i * 4] << 24;
-            w[i] |= b[i * 4 + 1] << 16;
-            w[i] |= b[i * 4 + 2] << 8;
-            w[i] |= b[i * 4 + 3];
-            w[i] >>>= 0;
-        }
-     
-        for (var j = 16; j < 68; j++) {
-            var x;
-            x = w[j - 16] ^ w[j - 9] ^ this._rotl(w[j - 3], 15);
-            x = x ^ this._rotl(x, 15) ^ this._rotl(x, 23);
-            w[j] = (x ^ this._rotl(w[j - 13], 7) ^ w[j - 6]) >>> 0;
-        }
-     
-        for (var j = 0; j < 64; j++) {
-            w[j + 68] = (w[j] ^ w[j + 4]) >>> 0;
-        }
-     
-        return w;
-    };
-     
-    SM3.prototype._rotl = function(x, n) {
-        n %= 32;
-        return ((x << n) | (x >>> (32 - n))) >>> 0;
-    };
-     
-    SM3.prototype._t = function(j) {
-        if (0 <= j && j < 16) {
-            return 0x79cc4519;
-        } else if (16 <= j && j < 64) {
-            return 0x7a879d8a;
-        } else {
-            console.error("invalid j for constant Tj");
-        }
-    };
-     
-    SM3.prototype._ff = function(j, x, y, z) {
-        if (0 <= j && j < 16) {
-            return (x ^ y ^ z) >>> 0;
-        } else if (16 <= j && j < 64) {
-            return ((x & y) | (x & z) | (y & z)) >>> 0;
-        } else {
-            console.error("invalid j for bool function FF");
-            return 0;
-        }
-    };
-     
-    SM3.prototype._gg = function(j, x, y, z) {
-        if (0 <= j && j < 16) {
-            return (x ^ y ^ z) >>> 0;
-        } else if (16 <= j && j < 64) {
-            return ((x & y) | (~x & z)) >>> 0;
-        } else {
-            console.error("invalid j for bool function GG");
-            return 0;
-        }
-    };
-     
-    /**
-     * 等效于Array.from目的是做浏览器兼容处理 Array.from IE浏览器不支持
-     */
-    SM3.prototype.toArray = function(s, f){
-        var a = [];
-        for(var i=0; i<s.length; i++){
-            var t  = s[i];
-            if(f){
-                t = f(t);
-            }
-            a.push(t);
-        }
-        return a;
-    };
-
+    // 山东需求,要有密文校验信息(SM3算法,在界面上已导入sm3对象)
     /**
      * SM3加密主函数
      * @param msg
      * @returns
      */
     function sm3Digest(msg){
-        var _sm3 = new SM3();
-        var digest = _sm3.sum(msg);
-        var hashHex = _sm3.toArray(digest, function(byte) {return ('0' + (byte & 0xFF).toString(16)).slice(-2);}).join('');
-        return hashHex;
+        let hashHex = sm3(msg);
+        // return hashHex;
+        return hashHex.toUpperCase();
     }
     
     return {