js加密解密二进制文件方法
本文通过crypto对二进制文件进行aes加密和解密,加密之后的文件是以文本的形式存储的
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>BFW NEW PAGE</title> <script id="bfwone" data="dep=jquery.17|crypto-js-3.1.9-1/crypto-js|crypto-js-3.1.9-1/pad-zeropadding&err=0" type="text/javascript" src="http://repo.bfw.wiki/bfwrepo/js/bfwone.js"></script> <script type="text/javascript"> bready(function() { $("#desfilebtn").click(function() { // Has a file been selected? var pwd = $("#pwd").val(); if (pwd == "") { alert('请设置一个解密密码'); return false; } if (document.getElementById("selectfile").files.length != 1) { alert('请选择一个文件'); return false; } var file = document.getElementById("selectfile").files[0]; var reader = new FileReader(); reader.onload = function(e) { var decrypted = CryptoJS.AES.decrypt(e.target.result, pwd) .toString(CryptoJS.enc.Latin1); if (!/^data:/.test(decrypted)) { alert("密码错误"); return false; } $("#downloadbtn").attr('href', decrypted); $("#downloadbtn").attr('download', file.name.replace('.encrypted', '')); $("#downloadbtn").html("解密完成,点击下载"); }; reader.readAsText(file); }); $("#encfilebtn").click(function() { // Has a file been selected? var pwd = $("#pwd").val(); if (pwd == "") { alert('请设置一个加密密码'); return false; } if (document.getElementById("selectfile").files.length != 1) { alert('请选择一个文件'); return false; } var file = document.getElementById("selectfile").files[0]; var reader = new FileReader(); // var file = reader.onload = function(e) { var encrypted = CryptoJS.AES.encrypt(e.target.result, pwd); $("#downloadbtn").attr('href', 'data:application/octet-stream,' + encrypted); $("#downloadbtn").attr('download', file.name + '.encrypted'); $("#downloadbtn").html("加密完成,点击下载"); }; reader.readAsDataURL(file); }); }); </script> </head> <body> <p> <input type="text" id="pwd" placeholder="请输入密码" /> </p> <p> <input type="file" id="selectfile" /><br><a id="downloadbtn"></a> </p> <p> <input type="button" id="encfilebtn" value="加密文件" /> </p> <p> <input type="button" id="desfilebtn" value="解密文件" /> </p> </body> </html>
网友评论0