1
lxl
2022-09-16 2d9ddf8269640309f22053d3c92a38fd77e84358
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
define(function(require, exports, module) {
    var _oCommon, _oUtils, _oBase64;
 
    require("websdk");
    _oCommon = require("common");
    _oUtils = require("utils");
    _oBase64 = require("base64");
 
    function EncryptionFac () {}
 
    EncryptionFac.prototype.encrypt = function (oStr, iRSABits, bBase64Encrypted, cbFun) {
        //var that = this;
        var    iBits = 1024;
 
        if (iRSABits) {
            iBits = iRSABits;
        }
 
        var szPassPhrase =  new Date() + "",
            szMattsRSAkey = cryptico.generateRSAKey(szPassPhrase, iBits),
            szPublicKeyString = cryptico.publicKeyString(szMattsRSAkey),
            szXml = "<?xml version='1.0' encoding='UTF-8'?><PublicKey><key>" + _oBase64.encode(szPublicKeyString) + "</key></PublicKey>",
            oXmlDoc = _oUtils.parseXmlFromStr(szXml);
 
        WebSDK.WSDK_Request(_oCommon.m_szHostName, _oCommon.m_iHttpProtocal, _oCommon.m_iHttpPort, {
            cmd: "challenge",
            type: "POST",
            data: oXmlDoc,
            success: function (status, xmlDoc) {
                var szDecryptionResult = cryptico.decrypt(_oBase64.decode(_oUtils.nodeValue(xmlDoc, "key")), szMattsRSAkey);
                if(szDecryptionResult.plaintext != null) {
                    var szKey,szEncryptPassword;
                    var aResult = [];
                    if (iBits === 256) {
                        szKey = _oUtils.toHex(szDecryptionResult.plaintext);
                    } else {
                        szKey = szDecryptionResult.plaintext;
                    }
 
                    szEncryptPassword = aes_encrypt(szDecryptionResult.plaintext.substring(0, 16), szKey, true);
 
                    if("function" === typeof cbFun) {
                        if("string" === typeof oStr) {
                            bBase64Encrypted && ( oStr = _oBase64.encode(oStr) );
                            cbFun( _oBase64.encode( szEncryptPassword + _oUtils.encodeAES(oStr, szKey, "", "ecb") ) );
                        } else if("[object Array]" === Object.prototype.toString.call(oStr)) {
                            for(var i = 0, iArrayLen = oStr.length; i < iArrayLen; i++) {
                                bBase64Encrypted && ( oStr[i] = _oBase64.encode(oStr[i]) );
                                var szTemp = szEncryptPassword + _oUtils.encodeAES(oStr[i], szKey, "", "ecb");
                                aResult.push( _oBase64.encode(szTemp) );
                            }
                            cbFun(aResult);
                        }
                    }
                }
            }
        });
    };
 
    EncryptionFac.prototype.encryptSync = function (oStr, iRSABits, bBase64Encrypted) {
        //var that = this;
        var    iBits = 1024;
        var aResult = [];
 
        if (iRSABits) {
            iBits = iRSABits;
        }
 
        var szPassPhrase =  new Date() + "",
            szMattsRSAkey = cryptico.generateRSAKey(szPassPhrase, iBits),
            szPublicKeyString = cryptico.publicKeyString(szMattsRSAkey),
            szXml = "<?xml version='1.0' encoding='UTF-8'?><PublicKey><key>" + _oBase64.encode(szPublicKeyString) + "</key></PublicKey>",
            oXmlDoc = _oUtils.parseXmlFromStr(szXml);
 
        WebSDK.WSDK_Request(_oCommon.m_szHostName, _oCommon.m_iHttpProtocal, _oCommon.m_iHttpPort, {
            cmd: "challenge",
            type: "POST",
            async: false,
            data: oXmlDoc,
            success: function (status, xmlDoc) {
                var szDecryptionResult = cryptico.decrypt(_oBase64.decode(_oUtils.nodeValue(xmlDoc, "key")), szMattsRSAkey);
                if(szDecryptionResult.plaintext != null) {
                    var szKey, szEncryptPassword;
                    if (iBits === 256) {
                        szKey = _oUtils.toHex(szDecryptionResult.plaintext);
                    } else {
                        szKey = szDecryptionResult.plaintext;
                    }
                    szEncryptPassword = aes_encrypt(szDecryptionResult.plaintext.substring(0, 16), szKey, true);
                    if("string" === typeof oStr) {
                        bBase64Encrypted && ( oStr = _oBase64.encode(oStr) );
                        aResult.push( _oBase64.encode( szEncryptPassword + _oUtils.encodeAES(oStr, szKey, "", "ecb") ) );
                    } else {
                        for(var i = 0, iArrayLen = oStr.length; i < iArrayLen; i++) {
                            bBase64Encrypted && ( oStr[i] = _oBase64.encode(oStr[i]) );
                            var szTemp = szEncryptPassword + _oUtils.encodeAES(oStr[i], szKey, "", "ecb");
                            aResult.push( _oBase64.encode(szTemp) );
                        }
                    }
                }
            }
        });
        if("string" === typeof oStr) {
            return aResult[0];
        } else {
            return aResult;
        }
    };
 
    module.exports = new EncryptionFac();
});