123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- 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();
- });
|