我在this网站上在线找到了此代码,但是它对我不起作用。当我尝试使用加密功能时,它给了我这个错误:
未捕获的TypeError:无法读取未定义的属性“ encrypt” 在加密时(Index.html:36) 在s(Index.html:86) 在HTMLButtonElement.onclick(Index.html:90)
这是我使用的html:
<body>
<script>
function s(){
console.log(encrypt("Hello", "mmm"));
console.log(decrypt(encrypt("Hello", "mmm"), "mmm"));
}
</script>
<button onclick="s();">click me</button>
</body>
这是加密代码(在“头部”):
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/components/core-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/components/sha256.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/components/enc-base64.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js"></script>
<script>
function toWordArray(str){
return CryptoJS.enc.Utf8.parse(str);
}
function toString(words){
return CryptoJS.enc.Utf8.stringify(words);
}
function toBase64String(words){
return CryptoJS.enc.Base64.stringify(words);
}
function encrypt(input, key){
var PROTOCOL_AES256 = 2;
var secret_key = CryptoJS.SHA256(key);
var header = toWordArray("AMAZON" + String.fromCharCode(PROTOCOL_AES256));
var iv = CryptoJS.lib.WordArray.random(16);
var body = CryptoJS.AES.encrypt(json_payload, secret_key, {iv: iv});//This is where the was.
// construct the packet
// HEADER + IV + BODY
header.concat(iv);
header.concat(body.ciphertext);
// encode in base64
return toBase64String(header);
}
function decrypt(input, key){
// convert payload encoded in base64 to words
var packet = CryptoJS.enc.Base64.parse(input);
// helpers to compute for offsets
var PROTOCOL_AES256 = 2;
var secret_key = CryptoJS.SHA256(key);
var header = toWordArray("AMAZON" + String.fromCharCode(PROTOCOL_AES256));
var iv = CryptoJS.lib.WordArray.random(16);
// compute for offsets
var packet_size = packet.words.length - (iv.words.length + header.words.length);
var start = iv.words.length + header.words.length;
var end = packet.words.length;
var ciphertext = CryptoJS.lib.WordArray.create(packet.words.slice(start, end));
var parsed_iv = CryptoJS.lib.WordArray.create(packet.words.slice(header.words.length, iv.words.length+1));
ciphertext = toBase64String(ciphertext);
var decrypted = CryptoJS.AES.decrypt(ciphertext, secret_key, {iv: parsed_iv});
return toString(decrypted);
}
</script>