前端通过AES进行加解密(ECB、CBC模式)

这篇具有很好参考价值的文章主要介绍了前端通过AES进行加解密(ECB、CBC模式)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

加密需求

  1. 在项目开发中,由于需要对接口传参的敏感信息进行加密传输,后端接口返回的参数也是进行加密过的,此时就需要进行加解密操作。
  2. 本篇文章使用AES进行加解密,AES加密算法提供了五种不同的工作模式:CBC,ECB,CTR,CFB,OFB
  3. 这里只对CBC和ECB加解密进行说明,这两种加密模式在前端使用时主要区别如下:
    1. 一种基础的加密方式,密文被分割成分组长度相等的块(不足补齐),然后单独一个个加密,一个个输出组成密文。
    2. 一种循环模式,前一个分组的密文和当前分组的明文异或或操作后再加密,这样做的目的是增强破解难度。(不容易主动攻击,安全性好于ECB,是SSL、IPSec的标准)

AES加解密

安装依赖
npm install crypto-js --save-dev
封装加解密方法(ECB模式)
  1. 将以下方法进行封装,文件命名为aes.js
    // 引入
    import CryptoJS from 'crypto-js'
    
    // 密钥
    const AES_KEY = '****************' // 后端提供
    
    // 加密
    export function encrypt ({ word }) {
      const key = CryptoJS.enc.Utf8.parse(AES_KEY)
      const srcs = CryptoJS.enc.Utf8.parse(word)
      const encrypted = CryptoJS.AES.encrypt(srcs, key, {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
      })
      return encrypted.toString()
    }
    
    // 解密
    export function decrypt ({ word }) {
      var key = CryptoJS.enc.Utf8.parse(AES_KEY)
      var decrypt = CryptoJS.AES.decrypt(word, key, {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
      })
      return CryptoJS.enc.Utf8.stringify(decrypt).toString()
    }
    
  2. 使用
    // 引入aes.js,注意文件路径不要出错
    import { encrypt, decrypt } from './aes'
    
    // data:需要加密的数据
    // encryptData:加密后的密文
    // 若有需要则将js对象转换为字符串后进行加密:JSON.stringify(data)
    const encryptData = encrypt({ word: JSON.stringify(data) })
    
    // data:需要解密的密文
    // decryptData:解密后的数据
    // 若解密结果为json字符串,则可以通过JSON.parse()方法将解密结果转化为json对象
    const decryptData = decrypt({ word: data}) 
    
封装加解密方法(CBC模式)
  1. 将以下方法进行封装,文件命名为aes.js
    // 引入
    import CryptoJS from 'crypto-js'
    
    // 密钥
    const AES_KEY = '****************' // 后端提供
    // 初始化向量
    const IV = '****************' // 后端提供
    
    //加密方法
    export function encrypt( word ) {
    	let key = CryptoJS.enc.Utf8.parse(AES_KEY)
    	let iv = CryptoJS.enc.Utf8.parse(IV)
    	let srcs = CryptoJS.enc.Utf8.parse(word)
    
    	let encrypted = CryptoJS.AES.encrypt(srcs, key, {
    		iv,
      		mode: CryptoJS.mode.CBC,
      		padding: CryptoJS.pad.ZeroPadding
    	});
    	return encrypted.toString();
    }
    
    //解密方法
    export function decrypt( word ) {
    	var key = CryptoJS.enc.Utf8.parse(AES_KEY)
    	let iv = CryptoJS.enc.Utf8.parse(IV)
    	
    	var decrypt = CryptoJS.AES.decrypt(word, key, {
      		iv,
      		mode: CryptoJS.mode.CBC,
     		padding: CryptoJS.pad.ZeroPadding
    	})
    	return decrypt.toString(CryptoJS.enc.Utf8).trim()
    }
    
    1. 使用
    // 引入aes.js,注意文件路径不要出错
    import { encrypt, decrypt } from './aes'
    
    // data:需要加密的数据
    // encryptData:加密后的密文
    // 若有需要则将js对象转换为字符串后进行加密:JSON.stringify(data)
    const encryptData = encrypt(JSON.stringify(data))
    
    // data:需要解密的密文
    // decryptData:解密后的数据
    // 若解密结果为json字符串,则可以通过JSON.parse()方法将解密结果转化为json对象
    const decryptData = decrypt(data)
    

文章来源地址https://www.toymoban.com/news/detail-596398.html

到了这里,关于前端通过AES进行加解密(ECB、CBC模式)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python使用CBC加密模式进行AES加密

    在这个示例中,我们使用了 cryptography 库的 Cipher、algorithms、modes、backend 和 padding 模块。 encrypt 函数接受明文字符串、密钥和初始向量(IV)作为参数。 我们首先使用 Cipher 类来创建一个 AES 密码器对象,指定所需的 AES 算法、CBC 加密模式和密钥。然后,我们获取密码器的加密

    2024年01月24日
    浏览(49)
  • JavaScript + GO 通过 AES + RSA 进行数据加解密

    浏览器端搞些小儿科的加密,就好比在黑暗夜空中,点缀了几颗星星,告诉黑客「这里有宝贵信息,快来翻牌」 浏览器端的加密,都是相对安全的。 它的具体安危,取决于里面存在的信息价值,是否值得破解者出手一试。 就跟那个经典的笑话一样: 某个客户自己开发了一套

    2024年02月14日
    浏览(47)
  • C++使用openssl对AES-256-ECB PKCS7 加解密

    2024年02月03日
    浏览(34)
  • 小程序AES加密ECB模式

    2024年02月09日
    浏览(270)
  • 国密算法SM2/3/4简单比较,以及基于Java的SM4(ECB模式,CBC模式)对称加解密实现

    常用的国密算法包含SM2,SM3,SM4。以下针对每个算法使用场景进行说明以比较其差异 SM2:非对称加密算法,可以替代RSA 数字签名,SM2为非对称加密,加解密使用一对私钥和公钥,只有签名发行者拥有私钥,可用于加密,其他需要验证解密或验签者使用公钥进行。如果使用公

    2024年04月13日
    浏览(39)
  • 前端使用AES密码加密、解密,使用详细(crypto加密解密,前后端分离,AES加密解密)

    1、 首先安装 crypto-js插件,安装命令如下:    -S等同于--save,保存在package.json文件中,是在dependencies 下, --save安装包信息将加入到dependencies(生产环境)中,生产阶段的依赖,也就是项目运行时的依赖,就是程序上线后仍然需要依赖; -D等同于--save-dev,也保存在package.j

    2024年02月11日
    浏览(59)
  • 前端AES加密解密

    前端经常会遇到这种接口和参数需要加密的情况,目前用的最多的就是aes加密了。以下就是操作步骤。以下方式适用各个前端框架,请自行根据框架修改对应语法 1.安装 CryptoJS 这个库就是用来加密的核心,直接打开项目终端,输入 npm install crypto-js --save 2. 新建 crypto.js 在 @/

    2024年02月13日
    浏览(58)
  • ssh命令报错no matching cipher found. Their offer: aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc

    执行 ssh user@host 报错,信息如下: 协议不匹配 可以使用如下命令 ssh -c aes128-cbc,aes192-cbc,aes256-cbc,3des-cbc user@host 也可以修改 ~/.ssh/config文件 vi ~/.ssh/config 增加配置 Ciphers +aes128-cbc,aes192-cbc,aes256-cbc

    2024年02月13日
    浏览(45)
  • 前端AES加密,后端解密,有效防止数据外泄

    在工作中经常遇到密码明文传输这个问题,为了让密码安全些会让加密,现在有个比较方便的AES加密(前端密钥可能存在泄露风险,应该放到配置项中): 一、前端加密 1、首先引入前端需要用到的js:crypto-js,下载地址: CryptoJS-v4.1.1 https://www.aliyundrive.com/s/bXP6M8ZxVAD 点击链接

    2024年02月16日
    浏览(47)
  • Python对AES进行加密和解密的多种方法

    前言 本文是该专栏的第24篇,后面会持续分享python的各种干货知识,值得关注。 做过爬虫项目的同学,对AES加解密都有遇到过。 在密码学中,加密算法也分为双向加密和单向加密。单向加密包括MD5、SHA等摘要算法,它们是不可逆的。而双向加密包括 对称加密 和 非对称加密

    2023年04月14日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包