加密是在客户端加密的,如android 和 IOS app里面,对图片加密后上传到服务器, 服务器接收并存储这个加密后的图片, 假设这个图片访问的url是http://xxx.png, 现在要在H5页面中显示这个加密图片,就要用js解密,用的是CryptoJS解密的(https://github.com/brix/crypto-js/releases),代码如下:
//需要引入的js文件
<script type="text/javascript" src="static/js/aes/aes.js"></script>
<script type="text/javascript" src="static/js/aes/core.js"></script>
<script type="text/javascript" src="static/js/aes/enc-base64.js"></script>
<script type="text/javascript" src="static/js/aes/enc-u8array.js"></script>
<script type="text/javascript" src="static/js/aes/lib-typedarrays.js"></script>
<script type="text/javascript" src="static/js/aes/mode-ecb.js"></script>
//在解密之前,要获取AES解密的key,我这里是个例子就写死了
var key = "1234567812345678"
var url = "http://xxx.png";
//页面上用ajax获取图片的字节数组
var xhr = new XMLHttpRequest();
xhr.open("GET",url,true);
xhr.responseType = "arraybuffer";
xhr.onload = function() {
if(xhr.readyState ==4){
if (xhr.status == 200){
process(xhr.response,key);
}else{
retry(url,key);
}
}
}
xhr.send();
function process(buffer,key) {
//将上面下载的图片转为base64编码
var view = new Uint8Array(buffer);
var contentWA = CryptoJS.enc.u8array.parse(view);
var dcBase64String = contentWA.toString(CryptoJS.enc.Base64);
//解密
var decryptedData = CryptoJS.AES.decrypt(dcBase64String, key, {
mode: CryptoJS.mode.ECB,
padding: CryptoJS.pad.Pkcs7
});
//把解密后的对象再转为base64编码,这步是关键,跟解密文字不同
var d64 = decryptedData.toString(CryptoJS.enc.Base64);
//构造img标签,显示解密后的图片
var img = new Image;
img.src = "data:image/png;base64,"+d64;
document.body.append(img);
}
//如果获取图片失败,尝试再获取一次.图片较少的话不需要重新获取,我这边图片一次性在40张左右,而且图片是上M的大图,失败较多,用这个再获取一次效果不错
function retry(url,key){
var xhr = new XMLHttpRequest();
xhr.open("GET",url,true);
xhr.responseType = "arraybuffer";
xhr.onload = function() {
if (xhr.status == 200){
process(xhr.response,key);
}
}
xhr.send();
}
分享到:
相关推荐
基于PHP和JS的AES相互加密解密方法详解(CryptoJS)_PHP_JS_AES源码
js aes加密解密示例!js aes加密解密示例!js aes加密解密示例!
uni-app aes的加密和解密
aes加密解密js
在工作中会经常遇到密码加密,URL传参要进行加密,在此我参照一个例子将用java实现的AES加解密程序用实例写出。JS实现AES-GCM加密,java实现AES-GCM解密
PHP开发过程中AES加密解密问题 js前端AES加密,PHP解密
前台页面通过引入提供的两个js,实现AES加密解密。后端java代码通过压缩包里的博客信息配置AESUtil.java公共类。
JS 前端加密解密 AESCBC模式 引用crypto-js 亲测可用,
AES加密解密第三方js,主要用于实现前端页面数据传输的加密与解密,具体如何使用参考本人博客:http://www.cnblogs.com/sunny1009/category/1101490.html
AES使用java和js互相加解密及前端MD5加密,java后台加密前端js解密,或前端js加密,后端java解密,
PHP和JS的AES相互加密解密;主要用于前端后台交互数据加密
java、Android、javaScript(可以改成vue)、ios AES加密通用,可在服务端加密,客户端解密,也可在客户端加密,服务端解密;由于csdn会自动把积分改到50,可以发邮件到1622007541@qq.com 免费送
java,php,GOLang,JavaScript,多端代码,使用AES ECB 128加密解密内容互通,可以使用任意一种语言加密,使用另一种语言解密
AES JS加密JAVA解密
本资源是对另一篇资源js端加密,后台解密/JS端解密,后台加密的后台版本,已亲测可用,并且加密和解密都可正常执行,注意:本资源中包含AES加密解密,RSA加密解密,以及生成PEM格式的RSA公私秘钥,但是有点没做好的...
不用cryptoJs的aes加密解密,代码包含Base64.js,pad-zeropadding-min.js,aes.js
// AES加密 Encrypt: function (word) { var srcs = CryptoJS.enc.Utf8.parse(word); var encrypted = CryptoJS.AES.encrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); ...
前端jQuery使用crypto-js实现aes加密,后端php使用openssl_decrypt解密;亲测可用;
由于项目需要,在网上查找了很多资料,整理了一下各种网上的资料,经过一段时间的研究,目前以完成对AES以及RSA的前端JS加密,目前已整理完,特整理一份出来供大家参考。注意:AES用的是CryptoJS库的,而RSA则是用的...