调试工具:https://the-x.cn/cryptography/Aes.aspx

  1. 先安装 crypto-js
    npm install crypto-js --save-dev
  2. 增加文件aes.js
    // 导入 crypto-js 包
    const CryptoJS = require('crypto-js')
    const keyVal = '123456' // 可以自己定义
    // 设置数据块长度
    const keySize = 128/*** 生成密钥字节数组, 原始密钥字符串不足128位, 补填0.* @param {string} key - 原始 key 值* @return Buffer*/
    const fillKey = (key) => {const filledKey = Buffer.alloc(keySize / 8)const keys = Buffer.from(key)if (keys.length < filledKey.length) {filledKey.map((b, i) => filledKey[i] = keys[i])}return filledKey
    }/*** 定义加密函数* @param {string} data - 需要加密的数据, 传过来前先进行 JSON.stringify(data);* @param {string} key - 加密使用的 key*/
    export function aesEncrypt(data, key) {key = CryptoJS.enc.Utf8.parse(fillKey(key || keyVal))/*** 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.ECB,padding: CryptoJS.pad.Pkcs7,iv: ''})// 将加密后的数据转换成 Base64const base64Cipher = cipher.ciphertext.toString(CryptoJS.enc.Base64)// 处理 Android 某些低版的BUGconst resultCipher = base64Cipher.replace(/\+/g, '-').replace(/\//g, '_')// 返回加密后的经过处理的 Base64return resultCipher
    }/**1. 定义解密函数2. @param {string} encrypted - 加密的数据;3. @param {string} key - 加密使用的 key*/
    export function aesDecrypt(encrypted, key) {key = CryptoJS.enc.Utf8.parse(fillKey(key || keyVal))// 先将 Base64 还原一下, 因为加密的时候做了一些字符的替换const restoreBase64 = encrypted.replace(/\-/g, '+').replace(/_/g, '/')// 这里 mode, padding, iv 一定要跟加密的时候完全一样// 返回的是一个解密后的对象const decipher = CryptoJS.AES.decrypt(restoreBase64, key, {mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7,iv: ''})// 将解密对象转换成 UTF8 的字符串const resultDecipher = CryptoJS.enc.Utf8.stringify(decipher)// 返回解密结果return resultDecipher
    }
    
  3. 引用使用
    import { aesEncrypt, aesDecrypt } from '@/utils/aes'
    const encrypted = aesEncrypt('11111')
    console.log('加密结果: ', encrypted)
    const aes = aesDecrypt(encrypted)
    console.log('解密密结果: ', encrypted)
    

踩了好久的

AES数据加密|解密 ECB_Pkcs7_128相关推荐

  1. 创建hive的AES加密解密函数

    1.写java代码,打jar包 1.pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <pro ...

  2. java aes 工具类_Java中的AES加解密工具类:AESUtils

    本人手写已测试,大家可以参考使用 package com.mirana.frame.utils.encrypt; import com.mirana.frame.constants.SysConsta ...

  3. linux c openssl aes 加解密

    1.OpenSSL提供了AES加解密算法的API const char *AES_options(void); AES算法状态,是所有支持或者是部分支持. 返回值:"aes(full)&qu ...

  4. Openssl Aes加解密使用示例

    Openssl Aes加解密使用示例 Aes简介 设置Aes密钥 Aes算法CBC加解密 Aes简介 Aes是分组加密算法,主要基于块加密,选取固定长度的密钥去加密明文中固定长度的块,生成的密文块与明 ...

  5. AES加解密基本原理

    1. 概述 在网络通信中,经常会用到加解密技术,其中AES加解密算法是比较广泛的应用于大块数据的对称加解密算法,本文主要介绍AES算法的一些基本原理,假设您对加解密.秘钥等知识有一定的认识,目标是为了 ...

  6. RSA数据加密解密(各种语言)

    RSA数据加密解密文档 增强数据传输与本地日志的数据安全 数据加密方式 使用rsa加密算法,客户端公钥加密,服务端私钥解密 (若单次传输数据量过大,之后可引入aes rsa只加密iv部分) 数据加密步 ...

  7. Python实现数据加密-解密

    Python实现数据加密-解密 运行环境: OS:macOS Monterey Version 12.3.1(英文版) IDE:PyCharm 2020.1 1 . PyCryptodome库安装 ​ ...

  8. C语言实现AES加解密

    C语言实现AES加解密 AES算法 具体代码 AES算法 (AES)RIJNDAEL算法是一个数据块长度盒密钥长度都可变的分组加密算法,其数据块长度和密钥长度都可独立地选定为大于等于128位且小于等于 ...

  9. java php aes加密解密_php aes 加密解密可与java对接

    php aes 加密解密可与java对接 博主:liu1693 发表时间:2017-02-23 16:52:27 浏览量:100 class Encrypt{ //加密方法 public static ...

最新文章

  1. 2021 年大厂面试高频架构题汇总(附答案详解)
  2. 802.11n 原理解析
  3. maven获得dom4j_在maven下的使用Dom4j解析XML....
  4. 2021年春季学期期末统一考试 劳动与社会保障法(本) 试题
  5. 20 个百无一用的 Firefox 扩展
  6. C#实现百度地图瓦片下载器(更新无水印版下载地址)
  7. 在微型计算机中1gb等于多少字节,1GB等于多少字节
  8. WPS---EXCEL(八)---互换两列数据
  9. python去掉最高分和最低分怎么算平均分_去掉最高分和最低分算平均分并进行排名...
  10. 使用 Certbot 自动申请并续订阿里云 DNS 免费泛域名证书
  11. adb常用命令以及使用
  12. 如何在vue中设置全局方法
  13. 使用Dl4j训练的一个手写数字识别软件
  14. [视觉概述] 机器视觉应用方向、项目流程及学习思路总结
  15. 分治法:找出不合格银币
  16. label 标签属性的总结归纳
  17. 【2018.10.1】「JOI 2014 Final」年轮蛋糕
  18. 区块链世界的流量聚集地
  19. 学习软件工程导论的心得体会
  20. 什么是中台?企业为什么要建中台?从数据中台到AI中台。

热门文章

  1. linux下格式化apfs,APFS文件系统科普贴
  2. android 闹钟运行原理,简单 闹钟 实现 原理
  3. android11 源码内置第三方输入法并默认选择
  4. 数据结构经典算法(8)八皇后
  5. 思博伦CEO称LTE与云计算紧密相连
  6. sdnu中的结构体问题
  7. 【Java核心】详解Java中断机制
  8. MYSQL自增的问题
  9. SMR磁盘学习8---Novel Address Mappings for Shingled Write Disks
  10. read only status pyCharm