lt;script src='https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/parts/core-min.js'gt;lt;/scriptgt; |
lt;screenplay src='https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/elements/sha256.js'gt;lt;/scriptgt; |
lt;script src='https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/elements/enc-base64.js'gt;lt;/screenplaygt; |
lt;screenplay src='https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js'gt;lt;/softwaregt; |
lt;scriptgt; |
functiontoWordArray(str) |
returnCryptoJS.enc.Utf8.parse(str); |
functiontoString(words) |
returnCryptoJS.enc.Utf8.stringify(phrases); |
functionalitytoBase64String(words) |
come backCryptoJS.enc.Base64.stringify(terms); |
functionalityencrypt(insight,key) |
varPROTOCOLAES256=2; |
varsecretkey=CryptoJS.SHA256(key); |
varheader=toWordArray('AMAZON'+Chain.fromCharCode(PROTOCOLAES256)); |
variv=CryptoJS.lib.WordArray.random(16); |
varbody=CryptoJS.AES.encrypt(jsonpayload, secretkey, iv:4); |
//create the box |
//HEADER + IV + BODY |
header.concat(4); |
header.concat(body.ciphertext); |
//encode in foundation64 |
come backtoBase64String(header); |
functionalitydecrypt(insight,key) |
//convert payload encoded in base64 to terms |
varpacket=CryptoJS.enc.Base64.parse(input); |
//helpers to compute for offsets |
varPROTOCOLAES256=2; |
varsecretkey=CryptoJS.SHA256(key); |
varheader=toWordArray('AMAZON'+Chain.fromCharCode(PROTOCOLAES256)); |
variv=CryptoJS.lib.WordArray.arbitrary(16); |
//compute for offsets |
varpacketsize=packet.terms.length-(iv.terms.length+header.words.size); |
varstart=iv.terms.duration+header.words.size; |
varend=packet.terms.length; |
varciphertext=CryptoJS.lib.WordArray.create(box.terms.cut(start, finish)); |
varparsediv=CryptoJS.lib.WordArray.create(packet.phrases.slice(header.phrases.duration,iv.phrases.duration+1)); |
ciphertext=toBase64String(ciphertext); |
vardecrypted=CryptoJS.AES.decrypt(ciphertext, secretkey, iv:parsediv); |
returntoString(decrypted); |
//data |
varkey='ZxlNEnojO5HbQngiYvrqu32Bur6V'; |
vardata=; |
data'title'='andrew'; |
information'corporation'='amazon'; |
varjsonpayload=JSON.stringify(information); |
gaming console.record(jsonpayload); |
varpayload=encrypt(jsonpayload, key); |
vardecoded=decrypt(payload, key); |
gaming console.journal(decoded); |
lt;/softwaregt; |
Thanks. The one issue I could not get best until I saw your program code, had been to complete a bottom64 string to CryptoJS.AES.decrypt. |