加密是在客户端加密的,如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加密解密时,需要注意的是,由于两者的实现可能略有不同,如IV的处理方式,因此需要确保在两端保持一致。在上面的例子中,我们使用了相同的密钥和IV,并将它们作为参数传递。为了在客户端(JS)...
后端Java实现AES加密解密: 1. **导入依赖**:在Java中,我们需要添加Apache Commons Codec库来处理Base64编码,以及Java Cryptography Extension (JCE)来支持AES操作。确保JCE未受限制,因为默认情况下,Java对某些...
本压缩包"uniapp 前后端AES加密解密.rar"正是为了解决这一问题,它包含了在uniapp环境下实现前后端AES加密解密的方法。AES(Advanced Encryption Standard),即高级加密标准,是一种广泛使用的对称加密算法,具有...
总的来说,跨语言的AES加密解密互通需要对各种语言的加密API有深入理解,并保持一致性以确保数据安全地在不同环境中传输。这个主题对于开发跨平台应用和微服务架构的开发者来说,是一个非常实用的知识点。
JavaScript中,可以使用MD5库如`crypto-js`来计算MD5哈希值。 5. **Java与JavaScript之间的兼容**:在Java后台与JavaScript前端之间进行AES加解密时,需要注意密钥的统一和编码问题。通常,Java使用字节数组表示...
本文将详细探讨如何使用JavaScript(JS)在HTML前端实现AES加密解密,并着重讲解AES的CBC模式及其填充方式。 AES,全称为Advanced Encryption Standard,即高级加密标准,是一种广泛应用于网络安全的对称加密算法。...
总之,不依赖cryptoJs的AES加密解密是通过自定义的JavaScript代码完成的,涉及的关键步骤包括密钥扩展、填充、字节到状态的转换、加密/解密过程以及Base64编码/解码。如果你需要在项目中实现这种功能,你需要深入...
在JavaScript中实现AES加密和解密是确保数据安全传输的重要手段,尤其对于前端开发人员来说,理解并能熟练运用AES至关重要。 AES的工作模式有多种,包括ECB(Electronic Codebook)、CBC(Cipher Block Chaining)...
在jQuery中,可以如下使用crypto-js进行AES加密: ```javascript var key = CryptoJS.lib.WordArray.random(16); // 生成128位随机密钥 var iv = CryptoJS.lib.WordArray.random(16); // 生成128位随机初始化向量 ...
本文将介绍一个名为“asmcrypto.js”的JavaScript库,它是用于AES加密解密的一个高效实现。 **asmcrypto.js库** asmcrypto.js是一个轻量级、高性能的JavaScript加密库,它使用了WebAssembly技术来提供接近原生速度...
在uni-app中,可以使用JavaScript的crypto-js库来实现AES加密解密。首先,你需要通过HBuilderX引入该库,然后在uni-app代码中使用: ```javascript const CryptoJS = require('crypto-js'); const key = 'your_...
通过这个案例,我们可以看到在Spring Boot项目中实现AES加密解密的基本步骤。然而,实际项目中还应考虑其他安全措施,例如使用HTTPS协议、密钥的动态生成和安全存储、以及对称加密与非对称加密的结合使用等,以增强...
uni-app aes的加密和解密
AES加密解密第三方js,主要用于实现前端页面数据传输的加密与解密,具体如何使用参考本人博客:http://www.cnblogs.com/sunny1009/category/1101490.html
在这个场景中,"AES JS加密JAVA解密" 提到的是使用JavaScript进行AES加密,然后在Java环境中对加密后的数据进行解密的过程。下面我们将深入探讨这个主题。 首先,AES加密的基本原理是通过一个密钥和一系列复杂的...
在JavaScript中,我们可以使用如`crypto-js`库来实现AES加密和解密。 **RSA** RSA是一种非对称加密算法,由两个密钥组成:公钥和私钥。公钥用于加密,私钥用于解密。这种机制允许数据在不安全的网络上传输时,只有...
AES加密通常与JavaScript结合使用,以便在客户端进行数据预处理,然后在服务器端进行解密。这有助于防止在数据传输过程中被窃取。本篇文章将深入探讨如何在JavaScript前端实现AES加密,并在PHP后端进行解密。 **AES...
在工作中会经常遇到密码加密,URL传参要进行加密,在此我参照一个例子将用java实现的AES加解密程序用实例写出。JS实现AES-GCM加密,java实现AES-GCM解密
以上就是在PHP和JavaScript之间使用AES加密解密的基本步骤。在实际应用中,应考虑错误处理、密钥管理、以及对用户输入的验证等安全措施。确保在前端和后端之间传输的数据始终受到保护,防止中间人攻击和其他安全威胁...
这个"**crypto-js.zip**"压缩包中包含了针对Egret的AES加密解密库,并且带有.d.ts文件,这意味着开发者可以无缝地将这个库集成到Egret项目中,享受类型检查的便利。 **AES加密工作原理:** AES加密的过程主要分为...