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>巡检地点 : 机房 开始时间 : 2019 结束时间 : 2019</p>
<p>检测结果 : *** 其它信息:***</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>
网友评论