AES数据加密|解密 ECB_Pkcs7_128
调试工具:https://the-x.cn/cryptography/Aes.aspx
- 先安装 crypto-js
npm install crypto-js --save-dev - 增加文件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 }
- 引用使用
import { aesEncrypt, aesDecrypt } from '@/utils/aes' const encrypted = aesEncrypt('11111') console.log('加密结果: ', encrypted) const aes = aesDecrypt(encrypted) console.log('解密密结果: ', encrypted)
踩了好久的
AES数据加密|解密 ECB_Pkcs7_128相关推荐
- 创建hive的AES加密解密函数
1.写java代码,打jar包 1.pom.xml文件 <?xml version="1.0" encoding="UTF-8"?> <pro ...
- java aes 工具类_Java中的AES加解密工具类:AESUtils
本人手写已测试,大家可以参考使用 package com.mirana.frame.utils.encrypt; import com.mirana.frame.constants.SysConsta ...
- linux c openssl aes 加解密
1.OpenSSL提供了AES加解密算法的API const char *AES_options(void); AES算法状态,是所有支持或者是部分支持. 返回值:"aes(full)&qu ...
- Openssl Aes加解密使用示例
Openssl Aes加解密使用示例 Aes简介 设置Aes密钥 Aes算法CBC加解密 Aes简介 Aes是分组加密算法,主要基于块加密,选取固定长度的密钥去加密明文中固定长度的块,生成的密文块与明 ...
- AES加解密基本原理
1. 概述 在网络通信中,经常会用到加解密技术,其中AES加解密算法是比较广泛的应用于大块数据的对称加解密算法,本文主要介绍AES算法的一些基本原理,假设您对加解密.秘钥等知识有一定的认识,目标是为了 ...
- RSA数据加密解密(各种语言)
RSA数据加密解密文档 增强数据传输与本地日志的数据安全 数据加密方式 使用rsa加密算法,客户端公钥加密,服务端私钥解密 (若单次传输数据量过大,之后可引入aes rsa只加密iv部分) 数据加密步 ...
- Python实现数据加密-解密
Python实现数据加密-解密 运行环境: OS:macOS Monterey Version 12.3.1(英文版) IDE:PyCharm 2020.1 1 . PyCryptodome库安装 ...
- C语言实现AES加解密
C语言实现AES加解密 AES算法 具体代码 AES算法 (AES)RIJNDAEL算法是一个数据块长度盒密钥长度都可变的分组加密算法,其数据块长度和密钥长度都可独立地选定为大于等于128位且小于等于 ...
- java php aes加密解密_php aes 加密解密可与java对接
php aes 加密解密可与java对接 博主:liu1693 发表时间:2017-02-23 16:52:27 浏览量:100 class Encrypt{ //加密方法 public static ...
最新文章
- 2021 年大厂面试高频架构题汇总(附答案详解)
- 802.11n 原理解析
- maven获得dom4j_在maven下的使用Dom4j解析XML....
- 2021年春季学期期末统一考试 劳动与社会保障法(本) 试题
- 20 个百无一用的 Firefox 扩展
- C#实现百度地图瓦片下载器(更新无水印版下载地址)
- 在微型计算机中1gb等于多少字节,1GB等于多少字节
- WPS---EXCEL(八)---互换两列数据
- python去掉最高分和最低分怎么算平均分_去掉最高分和最低分算平均分并进行排名...
- 使用 Certbot 自动申请并续订阿里云 DNS 免费泛域名证书
- adb常用命令以及使用
- 如何在vue中设置全局方法
- 使用Dl4j训练的一个手写数字识别软件
- [视觉概述] 机器视觉应用方向、项目流程及学习思路总结
- 分治法:找出不合格银币
- label 标签属性的总结归纳
- 【2018.10.1】「JOI 2014 Final」年轮蛋糕
- 区块链世界的流量聚集地
- 学习软件工程导论的心得体会
- 什么是中台?企业为什么要建中台?从数据中台到AI中台。