小程序AES加密、解密

小程序AES加密、解密,第1张

npm install  crypto-js

import CryptoJS from 'crypto-js'

// 定义加/解密的 key

const initKey = 'Test-AES-CBC-128'

// 设置数据块长度

const keySize = 128

//设置向量和服务端保持一致

const iv = "0abcdefghij7twhjm"

export const aesEncrypt = (data, key) =>{

  /**

  * CipherOption, 加密的一些选项:

  * mode: 加密模式, 可取值(CBC, CFB, CTR, CTRGladman, OFB, ECB), 都在 CryptoJS.mode 对象下

  * padding: 填充方式, 可取值(Pkcs7, AnsiX923, Iso10126, Iso97971, ZeroPadding, NoPadding), 都在 CryptoJS.pad 对象下

  * iv: 偏移量, mode === ECB 时, 不需要 iv

  * 返回的是一个加密对象

  */

  const cipher = CryptoJS.AES.encrypt(data, key, {

    mode: CryptoJS.mode.CBC,

    padding: CryptoJS.pad.Pkcs7,

    iv: CryptoJS.enc.Utf8.parse(iv)

  })

// 将加密后的数据转换成 Base64

  const base64Cipher = cipher.ciphertext.toString(CryptoJS.enc.Base64)//CryptoJS.enc.Base64

  console.log('base64Cipher', base64Cipher)

// 处理 Android 某些低版的BUG

//    const resultCipher = base64Cipher.replace('//+/g,\'-\'').replace(g,'_')

// 返回加密后的经过处理的 Base64

  return base64Cipher

}

/**

* 解密函数

* @param {string} encrypted - 加密的数据

* @param {string} key - 加密使用的 key

*/

export const aesDecrypt = (encrypted, key) =>{

// 先将 Base64 还原一下, 因为加密的时候做了一些字符的替换

//      const restoreBase64 = encrypted.replace().replace(/_/g,'/')

// 这里 mode, padding, iv 一定要跟加密的时候完全一样

// 返回的是一个解密后的对象

  const decipher = CryptoJS.AES.decrypt(encrypted, key, {

    mode: CryptoJS.mode.CBC,

    padding: CryptoJS.pad.Pkcs7,

    iv: CryptoJS.enc.Utf8.parse(iv)

  })

// 将解密对象转换成 UTF8 的字符串

  const resultDecipher = CryptoJS.enc.Utf8.stringify(decipher)

// 返回解密结果

  return resultDecipher

}

方法一:rpn.js:使用rpn.js实现eval函数功能

*** 作链接:网页链接

方法二:

(1)使用Underscore.js: *** 作链接:网页链接

(2)使用Immutable.js: *** 作链接:网页链接

(3)使用UUID、Base64、Chance: *** 作链接:网页链接

扩展微信小程序框架功能(1)——Promise

ES6 对 Promise 有了原生的支持,但微信开发者工具更新版本(0.11.112200)后, 移除了开发者工具对 ES6 中Promise 特性原生的支持, 需要引入第三方的 Promise 库。

扩展微信小程序框架功能(2)——Generator

Generator函数是ES6提供的一种异步编程解决方案,语法行为与传统函数完全不同。

扩展微信小程序框架功能(3)——函数功能增强

Underscore.js 和 Lodash 是最常用的JavaScript库。

扩展微信小程序框架功能(4)——Immutable.js

Immutable.js 是 Facebook 开发的不可变数据集合。Immutable

Data(不可变数据)一旦创建就不能被修改。通过使用Immutable

Data,可以更容易的处理缓存、回退、数据变化检测等问题,应用开发更简单。

扩展微信小程序框架功能(5)——Redux

Redux 是 JavaScript 状态容器,提供可预测化的状态管理。

扩展微信小程序框架功能(6)—日期时间

Moment.js是一个JavaScript的日期、时间处理工具类,其对于JavaScript的日期时间处理功能非常强悍和全面。可以用在浏览器环境中使用,也可以在Node.js中。

扩展微信小程序框架功能(7)——正则表达式

XRegExp 是一个开源的 JavaScript库,提供一个参数化、可扩展的支持各种浏览器的正则表达式的实现库,支持附加语法、标志以及方法。

扩展微信小程序框架功能(8)——Xml处理

x2js是一个 实现 XML 与 JavaScript 对象之间相互转换的工具库。

扩展微信小程序框架功能(9)——加解密

node-uuid可以快速地生成符合规范 的 UUID。js-base64可以实现Base64编码和解码。crypto-js可以非常方便地在 JavaScript 进行加解密。

扩展微信小程序框架功能(10)——测试辅助

Chance是一个 JavaScript 随机数生成工具。Mock.js可以生成随机数据,拦截 Ajax 请求。

方法三:moment

*** 作链接:网页链接


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12136267.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-21
下一篇2023-05-21

发表评论

登录后才能评论

评论列表(0条)

    保存