python aes 加密 js j解密

python 部分

import base64

from Crypto.Cipherimport AES

class AES_CBC:

    def add_to_16(self, value):

        while len(value) %16 !=0:

        value +='\0'

        return str.encode(value)# 返回bytes

# 加密方法

    def encrypt_oracle(self, key, text):

        # iv=self.add_to_16(key)  #多了个iv

        # 偏移量 16个0

        iv ="ihaierForTodo_Iv"

        # 初始化加密器

        aes = AES.new(self.add_to_16(key), AES.MODE_CBC,self.add_to_16(iv))

        bs = AES.block_size

        pad2 =lambda s: s + (bs -len(s) % bs) *chr(bs -len(s) % bs)# PKS7

        encrypt_aes = aes.encrypt(str.encode(pad2(text)))

        # 用base64转成字符串形式

        # 执行加密并转码返回bytes

        encrypted_text =str(base64.encodebytes(encrypt_aes),encoding='utf-8')

        print(encrypted_text)

        # 和js的 结果相同 http://tool.chacuo.net/cryptaes

        return encrypted_text

# 解密方法

    def decrypt_oralce(self, key, text):

        # 初始化加密器

        # 偏移量 16个0

        iv ="ihaierForTodo_Iv"

        aes = AES.new(self.add_to_16(key), AES.MODE_CBC,self.add_to_16(iv))

        # 优先逆向解密base64成bytes

        base64_decrypted = base64.decodebytes(text.encode(encoding='utf-8')

        decrypted_text =str(aes.decrypt(base64_decrypted),encoding='utf-8')# 执行解密       密并转码返回str

        unpad =lambda s: s[0:-ord(s[-1])]

        # PADDING = '\0'

        # print decrypted_text.rstrip(PADDING)  #zeropadding只见诶去掉结尾\0

        # print(unpad(decrypted_text))

        return unpad(decrypted_text)

if __name__ =='__main__':

    aes =AES_CBC()

    # 加密

    key ="ihaierForTodoKey"

    import json

    aa = [{"name":"张凯"}]

    enc_text = aes.encrypt_oracle(key, json.dumps(aa)).replace("/n","")

    # 解密

    dec_text = aes.decrypt_oralce(key, enc_text)

    print(key)

print(enc_text,'======')

print(dec_text)




前端部分js



<meta http-equiv="Content-Type"content="text/html;charset=utf-8">

<html align='left'>

<script>

!function (t, n) {

"object" ==typeof exports ? module.exports =exports = n() :"function" ==typeof define && define.amd ? define([], n) : t.CryptoJS = n()

}(this,function () {

var t = t ||function (t, n) {

var i =Object.create ||function () {

function t() {}

return function (n) {

var i;

return t.prototype = n,i =new t,t.prototype =null,i

        }

}(),

e = {},

r =e.lib = {},

o =r.Base =function () {

return {

extend:function (t) {

var n =i(this);

return t &&n.mixIn(t),n.hasOwnProperty("init") &&this.init !==n.init || (n.init =function () {

n.$super.init.apply(this,arguments)

}),n.init.prototype =n,n.$super =this,n

          },

create:function () {

var t =this.extend();

return t.init.apply(t,arguments),t

          },

init:function () {},

mixIn:function (t) {

for (var n in t) t.hasOwnProperty(n) && (this[n] = t[n]);

t.hasOwnProperty("toString") && (this.toString = t.toString)

},

clone:function () {

return this.init.prototype.extend(this)

}

}

}(),

s =r.WordArray =o.extend({

init:function (t, i) {

t =this.words = t || [], i != n ?this.sigBytes = i :this.sigBytes =4 * t.length

        },

toString:function (t) {

return (t ||c).stringify(this)

},

concat:function (t) {

var n =this.words,

i = t.words,

e =this.sigBytes,

r = t.sigBytes;

if (this.clamp(),e %4)

for (var o =0;o

var s =i[o >>>2] >>>24 -o %4 *8 &255;

n[e +o >>>2] |=s <<24 - (e +o) %4 *8

            }else

              for (var o =0;o >>2] =i[o >>>2];

return this.sigBytes +=r,this

        },

clamp:function () {

var n =this.words,

i =this.sigBytes;

n[i >>>2] &=4294967295 <<32 -i %4 *8,n.length = t.ceil(i /4)

},

clone:function () {

var t =o.clone.call(this);

return t.words =this.words.slice(0),t

        },

random:function (n) {

for (var i,e = [],r =function (n) {

var n = n,

i =987654321,

e =4294967295;

return function () {

i =36969 * (65535 &i) + (i >>16) &e,n =18e3 * (65535 &n) + (n >>16) &e;

var r = (i <<16) +n &e;

return r /=4294967296,r +=.5,r * (t.random() >.5 ?1 : -1)

}

},o =0;o < n;o +=4) {

var a =r(4294967296 * (i || t.random()));

i =987654071 *a(),e.push(4294967296 *a() |0)

}

return new s.init(e, n)

}

}),

a =e.enc = {},

c =a.Hex = {

stringify:function (t) {

for (var n = t.words,i = t.sigBytes,e = [],r =0;r

var o =n[r >>>2] >>>24 -r %4 *8 &255;

e.push((o >>>4).toString(16)),e.push((15 &o).toString(16))

}

return e.join("")

},

parse:function (t) {

for (var n = t.length,i = [],e =0;e >>3] |=parseInt(t.substr(e,2),16) <<24 -e %8 *4;

return new s.init(i,n /2)

}

},

u =a.Latin1 = {

stringify:function (t) {

for (var n = t.words,i = t.sigBytes,e = [],r =0;r

var o =n[r >>>2] >>>24 -r %4 *8 &255;

e.push(String.fromCharCode(o))

}

return e.join("")

},

parse:function (t) {

for (var n = t.length,i = [],e =0;e >>2] |= (255 & t.charCodeAt(e)) <<24 -e %4 *8;

return new s.init(i,n)

}

},

f =a.Utf8 = {

stringify:function (t) {

try {

return decodeURIComponent(escape(u.stringify(t)))

}catch (t) {

throw new Error("Malformed UTF-8 data")

}

},

parse:function (t) {

return u.parse(unescape(encodeURIComponent(t)))

}

},

h =r.BufferedBlockAlgorithm =o.extend({

reset:function () {

this._data =new s.init,this._nDataBytes =0

        },

_append:function (t) {

"string" ==typeof t && (t =f.parse(t)),this._data.concat(t),this._nDataBytes += t.sigBytes

        },

_process:function (n) {

var i =this._data,

e =i.words,

r =i.sigBytes,

o =this.blockSize,

a =4 *o,

c =r /a;

c = n ? t.ceil(c) : t.max((0 |c) -this._minBufferSize,0);

var u =c *o,

f = t.min(4 *u,r);

if (u) {

for (var h =0;h

var p =e.splice(0,u);

i.sigBytes -=f

          }

return new s.init(p,f)

},

clone:function () {

var t =o.clone.call(this);

return t._data =this._data.clone(),t

        },

_minBufferSize:0

      }),

p = (r.Hasher =h.extend({

cfg:o.extend(),

init:function (t) {

this.cfg =this.cfg.extend(t),this.reset()

},

reset:function () {

h.reset.call(this),this._doReset()

},

update:function (t) {

return this._append(t),this._process(),this

        },

finalize:function (t) {

t &&this._append(t);

var n =this._doFinalize();

return n

        },

blockSize:16,

_createHelper:function (t) {

return function (n, i) {

return new t.init(i).finalize(n)

}

},

_createHmacHelper:function (t) {

return function (n, i) {

return new p.HMAC.init(t, i).finalize(n)

}

}

}),e.algo = {});

return e

  }(Math);

return t

});

//# sourceMappingURL=core.min.js.map

!function (e, t, i) {

"object" ==typeof exports ? module.exports =exports = t(require("./core.min"), require("./sha1.min"), require("./hmac.min")) :"function" ==typeof define && define.amd ? define(["./core.min","./sha1.min","./hmac.min"], t) : t(e.CryptoJS)

}(this,function (e) {

return function () {

var t = e,

i =t.lib,

r =i.Base,

n =i.WordArray,

o =t.algo,

a =o.MD5,

c =o.EvpKDF =r.extend({

cfg:r.extend({

keySize:4,

hasher:a,

iterations:1

        }),

init:function (e) {

this.cfg =this.cfg.extend(e)

},

compute:function (e, t) {

for (var i =this.cfg,r =i.hasher.create(),o =n.create(),a =o.words,c =i.keySize,f =i.iterations;a.length

s &&r.update(s);

var s =r.update(e).finalize(t);

r.reset();

for (var u =1;u

o.concat(s)

}

return o.sigBytes =4 *c,o

        }

});

t.EvpKDF =function (e, t, i) {

return c.create(i).compute(e, t)

}

}(), e.EvpKDF

});

//# sourceMappingURL=evpkdf.min.js.map

!function (r, e) {

"object" ==typeof exports ? module.exports =exports = e(require("./core.min")) :"function" ==typeof define && define.amd ? define(["./core.min"], e) : e(r.CryptoJS)

}(this,function (r) {

return function () {

function e(r, e, t) {

for (var n = [],i =0,o =0;o < e;o++)

if (o %4) {

var f = t[r.charCodeAt(o -1)] <

c = t[r.charCodeAt(o)] >>>6 -o %4 *2;

n[i >>>2] |= (f |c) <<24 -i %4 *8,i++

}return a.create(n,i)

}

var t = r,

n =t.lib,

a =n.WordArray,

i =t.enc;

i.Base64 = {

stringify:function (r) {

var e = r.words,

t = r.sigBytes,

n =this._map;

r.clamp();

for (var a = [],i =0;i

for (var o =e[i >>>2] >>>24 -i %4 *8 &255,f =e[i +1 >>>2] >>>24 - (i +1) %4 *8 &255,c =e[i +2 >>>2] >>>24 - (i +2) %4 *8 &255,s =o <<16 |f <<8 |c,h =0;h <4 &&i +.75 *h >>6 * (3 -h) &63));

var p =n.charAt(64);

if (p)

for (;a.length %4;)a.push(p);

return a.join("")

},

parse:function (r) {

var t = r.length,

n =this._map,

a =this._reverseMap;

if (!a) {

a =this._reverseMap = [];

for (var i =0;i

        }

var o =n.charAt(64);

if (o) {

var f = r.indexOf(o);

f !== -1 && (t =f)

}

return e(r,t,a)

},

_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="

    }

}(), r.enc.Base64

});

//# sourceMappingURL=enc-base64.min.js.map

!function (e, t, r) {

"object" ==typeof exports ? module.exports =exports = t(require("./core.min"), require("./evpkdf.min")) :"function" ==typeof define && define.amd ? define(["./core.min","./evpkdf.min"], t) : t(e.CryptoJS)

}(this,function (e) {

e.lib.Cipher ||function (t) {

var r = e,

i =r.lib,

n =i.Base,

c =i.WordArray,

o =i.BufferedBlockAlgorithm,

s =r.enc,

a = (s.Utf8,s.Base64),

f =r.algo,

p =f.EvpKDF,

d =i.Cipher =o.extend({

cfg:n.extend(),

createEncryptor:function (e, t) {

return this.create(this._ENC_XFORM_MODE, e, t)

},

createDecryptor:function (e, t) {

return this.create(this._DEC_XFORM_MODE, e, t)

},

init:function (e, t, r) {

this.cfg =this.cfg.extend(r),this._xformMode = e,this._key = t,this.reset()

},

reset:function () {

o.reset.call(this),this._doReset()

},

process:function (e) {

return this._append(e),this._process()

},

finalize:function (e) {

e &&this._append(e);

var t =this._doFinalize();

return t

        },

keySize:4,

ivSize:4,

_ENC_XFORM_MODE:1,

_DEC_XFORM_MODE:2,

_createHelper:function () {

function e(e) {

return "string" ==typeof e ?B :x

          }

return function (t) {

return {

encrypt:function (r, i, n) {

return e(i).encrypt(t, r, i, n)

},

decrypt:function (r, i, n) {

return e(i).decrypt(t, r, i, n)

}

}

}

}()

}),

h = (i.StreamCipher =d.extend({

_doFinalize:function () {

var e =this._process(!0);

return e

        },

blockSize:1

      }),r.mode = {}),

u =i.BlockCipherMode =n.extend({

createEncryptor:function (e, t) {

return this.Encryptor.create(e, t)

},

createDecryptor:function (e, t) {

return this.Decryptor.create(e, t)

},

init:function (e, t) {

this._cipher = e,this._iv = t

}

}),

l =h.CBC =function () {

function e(e, r, i) {

var n =this._iv;

if (n) {

var c =n;

this._iv = t

}else var c =this._prevBlock;

for (var o =0;o < i;o++) e[r +o] ^=c[o]

}

var r =u.extend();

return r.Encryptor =r.extend({

processBlock:function (t, r) {

var i =this._cipher,

n =i.blockSize;

e.call(this, t, r,n),i.encryptBlock(t, r),this._prevBlock = t.slice(r, r +n)

}

}),r.Decryptor =r.extend({

processBlock:function (t, r) {

var i =this._cipher,

n =i.blockSize,

c = t.slice(r, r +n);

i.decryptBlock(t, r),e.call(this, t, r,n),this._prevBlock =c

          }

}),r

      }(),

_ =r.pad = {},

v =_.Pkcs7 = {

pad:function (e, t) {

for (var r =4 * t,i =r - e.sigBytes %r,n =i <<24 |i <<16 |i <<8 |i,o = [],s =0;s

var a =c.create(o,i);

e.concat(a)

},

unpad:function (e) {

var t =255 & e.words[e.sigBytes -1 >>>2];

e.sigBytes -=t

        }

},

y = (i.BlockCipher =d.extend({

cfg:d.cfg.extend({

mode:l,

padding:v

        }),

reset:function () {

d.reset.call(this);

var e =this.cfg,

t =e.iv,

r =e.mode;

if (this._xformMode ==this._ENC_XFORM_MODE)var i =r.createEncryptor;

else {

var i =r.createDecryptor;

this._minBufferSize =1

          }

this._mode &&this._mode.__creator ==i ?this._mode.init(this,t &&t.words) : (this._mode =i.call(r,this,t &&t.words),this._mode.__creator =i)

},

_doProcessBlock:function (e, t) {

this._mode.processBlock(e, t)

},

_doFinalize:function () {

var e =this.cfg.padding;

if (this._xformMode ==this._ENC_XFORM_MODE) {

e.pad(this._data,this.blockSize);

var t =this._process(!0)

}else {

var t =this._process(!0);

e.unpad(t)

}

return t

        },

blockSize:4

      }),i.CipherParams =n.extend({

init:function (e) {

this.mixIn(e)

},

toString:function (e) {

return (e ||this.formatter).stringify(this)

}

})),

m =r.format = {},

k =m.OpenSSL = {

stringify:function (e) {

var t = e.ciphertext,

r = e.salt;

if (r)var i =c.create([1398893684,1701076831]).concat(r).concat(t);

else var i =t;

return i.toString(a)

},

parse:function (e) {

var t =a.parse(e),

r =t.words;

if (1398893684 ==r[0] &&1701076831 ==r[1]) {

var i =c.create(r.slice(2,4));

r.splice(0,4),t.sigBytes -=16

          }

return y.create({

ciphertext:t,

salt:i

          })

}

},

x =i.SerializableCipher =n.extend({

cfg:n.extend({

format:k

        }),

encrypt:function (e, t, r, i) {

i =this.cfg.extend(i);

var n = e.createEncryptor(r, i),

c =n.finalize(t),

o =n.cfg;

return y.create({

ciphertext:c,

key: r,

iv:o.iv,

algorithm: e,

mode:o.mode,

padding:o.padding,

blockSize: e.blockSize,

formatter: i.format

          })

},

decrypt:function (e, t, r, i) {

i =this.cfg.extend(i), t =this._parse(t, i.format);

var n = e.createDecryptor(r, i).finalize(t.ciphertext);

return n

        },

_parse:function (e, t) {

return "string" ==typeof e ? t.parse(e,this) : e

}

}),

g =r.kdf = {},

S =g.OpenSSL = {

execute:function (e, t, r, i) {

i || (i =c.random(8));

var n =p.create({

keySize: t + r

}).compute(e, i),

o =c.create(n.words.slice(t),4 * r);

return n.sigBytes =4 * t,y.create({

key:n,

iv:o,

salt: i

})

}

},

B =i.PasswordBasedCipher =x.extend({

cfg:x.cfg.extend({

kdf:S

        }),

encrypt:function (e, t, r, i) {

i =this.cfg.extend(i);

var n = i.kdf.execute(r, e.keySize, e.ivSize);

i.iv =n.iv;

var c =x.encrypt.call(this, e, t,n.key, i);

return c.mixIn(n),c

        },

decrypt:function (e, t, r, i) {

i =this.cfg.extend(i), t =this._parse(t, i.format);

var n = i.kdf.execute(r, e.keySize, e.ivSize, t.salt);

i.iv =n.iv;

var c =x.decrypt.call(this, e, t,n.key, i);

return c

        }

})

}()

});

//# sourceMappingURL=cipher-core.min.js.map

!function (e, i) {

"object" ==typeof exports ? module.exports =exports = i(require("./core.min")) :"function" ==typeof define && define.amd ? define(["./core.min"], i) : i(e.CryptoJS)

}(this,function (e) {

!function () {

var i = e,

t =i.lib,

n =t.Base,

s =i.enc,

r =s.Utf8,

o =i.algo;

o.HMAC =n.extend({

init:function (e, i) {

e =this._hasher =new e.init,"string" ==typeof i && (i =r.parse(i));

var t = e.blockSize,

n =4 *t;

i.sigBytes >n && (i = e.finalize(i)), i.clamp();

for (var s =this._oKey = i.clone(),o =this._iKey = i.clone(),a =s.words,f =o.words,c =0;c

s.sigBytes =o.sigBytes =n,this.reset()

},

reset:function () {

var e =this._hasher;

e.reset(),e.update(this._iKey)

},

update:function (e) {

return this._hasher.update(e),this

      },

finalize:function (e) {

var i =this._hasher,

t =i.finalize(e);

i.reset();

var n =i.finalize(this._oKey.clone().concat(t));

return n

      }

})

}()

});

//# sourceMappingURL=hmac.min.js.map

!function (e, o, r) {

"object" ==typeof exports ? module.exports =exports = o(require("./core.min"), require("./cipher-core.min")) :"function" ==typeof define && define.amd ? define(["./core.min","./cipher-core.min"], o) : o(e.CryptoJS)

}(this,function (e) {

return e.mode.ECB =function () {

var o = e.lib.BlockCipherMode.extend();

return o.Encryptor =o.extend({

processBlock:function (e, o) {

this._cipher.encryptBlock(e, o)

}

}),o.Decryptor =o.extend({

processBlock:function (e, o) {

this._cipher.decryptBlock(e, o)

}

}),o

  }(), e.mode.ECB

});

//# sourceMappingURL=mode-ecb.min.js.map

!function (e, r, i) {

"object" ==typeof exports ? module.exports =exports = r(require("./core.min"), require("./cipher-core.min")) :"function" ==typeof define && define.amd ? define(["./core.min","./cipher-core.min"], r) : r(e.CryptoJS)

}(this,function (e) {

return e.pad.Pkcs7

});

//# sourceMappingURL=pad-pkcs7.min.js.map

!function (e, r, i) {

"object" ==typeof exports ? module.exports =exports = r(require("./core.min"), require("./enc-base64.min"), require("./md5.min"), require("./evpkdf.min"), require("./cipher-core.min")) :"function" ==typeof define && define.amd ? define(["./core.min","./enc-base64.min","./md5.min","./evpkdf.min","./cipher-core.min"], r) : r(e.CryptoJS)

}(this,function (e) {

return function () {

var r = e,

i =r.lib,

n =i.BlockCipher,

o =r.algo,

t = [],

c = [],

s = [],

f = [],

a = [],

d = [],

u = [],

v = [],

h = [],

y = [];

!function () {

for (var e = [],r =0;r <256;r++)r <128 ?e[r] =r <<1 :e[r] =r <<1 ^283;

for (var i =0,n =0,r =0;r <256;r++) {

var o =n ^n <<1 ^n <<2 ^n <<3 ^n <<4;

o =o >>>8 ^255 &o ^99,t[i] =o,c[o] =i;

var p =e[i],

l =e[p],

_ =e[l],

k =257 *e[o] ^16843008 *o;

s[i] =k <<24 |k >>>8,f[i] =k <<16 |k >>>16,a[i] =k <<8 |k >>>24,d[i] =k;

var k =16843009 *_ ^65537 *l ^257 *p ^16843008 *i;

u[o] =k <<24 |k >>>8,v[o] =k <<16 |k >>>16,h[o] =k <<8 |k >>>24,y[o] =k,i ? (i =p ^e[e[e[_ ^p]]],n ^=e[e[n]]) :i =n =1

      }

}();

var p = [0,1,2,4,8,16,32,64,128,27,54],

l =o.AES =n.extend({

_doReset:function () {

if (!this._nRounds ||this._keyPriorReset !==this._key) {

for (var e =this._keyPriorReset =this._key,r =e.words,i =e.sigBytes /4,n =this._nRounds =i +6,o =4 * (n +1),c =this._keySchedule = [],s =0;s

if (s

else {

var f =c[s -1];

s %i ?i >6 &&s %i ==4 && (f =t[f >>>24] <<24 |t[f >>>16 &255] <<16 |t[f >>>8 &255] <<8 |t[255 &f]) : (f =f <<8 |f >>>24,f =t[f >>>24] <<24 |t[f >>>16 &255] <<16 |t[f >>>8 &255] <<8 |t[255 &f],f ^=p[s /i |0] <<24),c[s] =c[s -i] ^f

              }for (var a =this._invKeySchedule = [],d =0;d

var s =o -d;

if (d %4)var f =c[s];

else var f =c[s -4];

d <4 ||s <=4 ?a[d] =f :a[d] =u[t[f >>>24]] ^v[t[f >>>16 &255]] ^h[t[f >>>8 &255]] ^y[t[255 &f]]

}

}

},

encryptBlock:function (e, r) {

this._doCryptBlock(e, r,this._keySchedule,s,f,a,d,t)

},

decryptBlock:function (e, r) {

var i = e[r +1];

e[r +1] = e[r +3], e[r +3] =i,this._doCryptBlock(e, r,this._invKeySchedule,u,v,h,y,c);

var i = e[r +1];

e[r +1] = e[r +3], e[r +3] =i

        },

_doCryptBlock:function (e, r, i, n, o, t, c, s) {

for (var f =this._nRounds,a = e[r] ^ i[0],d = e[r +1] ^ i[1],u = e[r +2] ^ i[2],v = e[r +3] ^ i[3],h =4,y =1;y

var p = n[a >>>24] ^ o[d >>>16 &255] ^ t[u >>>8 &255] ^ c[255 &v] ^ i[h++],

l = n[d >>>24] ^ o[u >>>16 &255] ^ t[v >>>8 &255] ^ c[255 &a] ^ i[h++],

_ = n[u >>>24] ^ o[v >>>16 &255] ^ t[a >>>8 &255] ^ c[255 &d] ^ i[h++],

k = n[v >>>24] ^ o[a >>>16 &255] ^ t[d >>>8 &255] ^ c[255 &u] ^ i[h++];

a =p,d =l,u =_,v =k

          }

var p = (s[a >>>24] <<24 | s[d >>>16 &255] <<16 | s[u >>>8 &255] <<8 | s[255 &v]) ^ i[h++],

l = (s[d >>>24] <<24 | s[u >>>16 &255] <<16 | s[v >>>8 &255] <<8 | s[255 &a]) ^ i[h++],

_ = (s[u >>>24] <<24 | s[v >>>16 &255] <<16 | s[a >>>8 &255] <<8 | s[255 &d]) ^ i[h++],

k = (s[v >>>24] <<24 | s[a >>>16 &255] <<16 | s[d >>>8 &255] <<8 | s[255 &u]) ^ i[h++];

e[r] =p, e[r +1] =l, e[r +2] =_, e[r +3] =k

        },

keySize:8

      });

r.AES =n._createHelper(l)

}(), e.AES

});

//# sourceMappingURL=aes.min.js.map

!function (e, n) {

"object" ==typeof exports ? module.exports =exports = n(require("./core.min")) :"function" ==typeof define && define.amd ? define(["./core.min"], n) : n(e.CryptoJS)

}(this,function (e) {

return e.enc.Utf8

});

//===================

</script>

<h1>巡检报告</h1>

<body>

<h2>报告综述</h2>

<p>巡检地点 : 机房&nbsp;&nbsp;开始时间 : 2019&nbsp;&nbsp;结束时间 : 2019</p>

<p>检测结果 : ***&nbsp;&nbsp;其它信息:***</p>

<h2>详细信息</h2>

<table border="1" width = "40%" cellspacing='0' cellpadding='0' align='left'>

<tr>

<th>机柜号</th>

<th>检测时间</th>

<th>检测结果</th>

<th>详细信息</th>

<th>图片路径</th>

</tr>

<tr id="dataList">

</tr>

</table>

<div id="templatelist"></div>//要渲染的位置

</body>

<script>

var loveStr ="";

var data1 = [{'cabID':1,'shijian':2019,'final_result':'正常','info':'无','image_path':'test.jpg'}];

//var aseKey='zhangkai';//秘钥

//var key = CryptoJS.enc.Utf8.parse(aseKey);//将秘钥转换成Utf8字节数组

//var iv = CryptoJS.enc.Utf8.parse('ABCDEF1234123412');

//var encrypt = CryptoJS.AES.encrypt(JSON.stringify(data1), key, {

//  iv: CryptoJS.enc.Utf8.parse(aseKey.substr(0,16)),

//      mode: CryptoJS.mode.CBC,

//    padding: CryptoJS.pad.Pkcs7

//});

//var data2 =encrypt.toString();//加密后的数据

//console.log(data2)

//解密

    var data2 ='r2WAwr+VaTh5ivwf2dx0J6LCBmWBOzh/lnyuR6dEJms=';

var aseKey='ihaierForTodoKey';//秘钥

    var key =CryptoJS.enc.Utf8.parse(aseKey);//将秘钥转换成Utf8字节数组

    var decrypt =CryptoJS.AES.decrypt(data2,key, {

iv:CryptoJS.enc.Utf8.parse("ihaierForTodo_Iv".substr(0,16)),

mode:CryptoJS.mode.CBC,

padding:CryptoJS.pad.Pkcs7

    });

console.log(CryptoJS.enc.Utf8,'--------')

console.log(decrypt.toString(CryptoJS.enc.Utf8),'--------')

var data3 =JSON.parse(decrypt.toString(CryptoJS.enc.Utf8));//解密后的数据

    console.log(data3)

// 准备好的数据源,可以是通过网络获取的json数据,也可以是通过ajax从后台拿到的数据

    for (let i =0;i

loveStr +='<td>' +data3[i].cabID +'</td>' +'<td>' +data3[i].shijian +'</td>'+

'<td>' +data3[i].final_result +'</td>' +'<td>' +data3[i].info +''

        +'<td>' +data3[i].image_path +'</td>';

}

console.log(loveStr);

document.getElementById('dataList').innerHTML =loveStr;

</script>

</html>

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,874评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,102评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,676评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,911评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,937评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,935评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,860评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,660评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,113评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,363评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,506评论 1 346
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,238评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,861评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,486评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,674评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,513评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,426评论 2 352

推荐阅读更多精彩内容