iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >Vue中使用crypto-jsAES对称加密算法实现加密解密
  • 537
分享到

Vue中使用crypto-jsAES对称加密算法实现加密解密

2024-04-02 19:04:59 537人浏览 泡泡鱼
摘要

目录 下载crypto-js加密解密数据AES算法的ECB模式加密-设置秘钥AES算法的CBC模式加密-设置秘钥和偏移量参考: 在数字加密算法中,通过可划分为对称

 在数字加密算法中,通过可划分为对称加密非对称加密

对称加密:如AES,DES,3DES

含义:加密和解密使用的是同一把钥匙。密钥不能在网络中传输,避免被拦截。如果要传输,必须要对密钥进行非对称加密再加密一次。

优点:算法简单,加密解密容易,效率高,执行快。

缺点:相对来说不算特别安全,只有一把钥匙,密文如果被拦截,且密钥也被劫持,那么,信息很容易被破译。

非对称加密:如RSA DSA RCC

含义:有两个钥匙,及公钥(Public Key)和私钥(Private Key)。公钥和私钥是成对的存在,如果对原文使用公钥加密,则只能使用对应的私钥才能解密。通过私钥经过一系列算法是可以推导出公钥的,但是无法通过公钥反向推倒出私钥,这个过程的单向的。

优点:安全,即使密文被拦截、公钥被获取,但是无法获取到私钥,也就无法破译密文。作为接收方,务必要保管好自己的密钥。

缺点:加密算法及其复杂,安全性依赖算法与密钥,而且加密和解密效率很低。

 下载crypto-js

cnpm i -S crypto-js

局部引用

import CryptoJS from "crypto-js";

加密解密数据

前端CBC模式或者ECB模式下的填充方式 Pkcs7,对应后端AES算法模式中的 PKCS5Padding 填充方式

AES算法的ECB模式加密-设置秘钥

ECB(Electronic Code Book电子密码本)模式

优点:

  • 简单;
  • 有利于并行计算;
  • 误差不会被扩散; 

缺点:  

  • 不能隐藏明文的模式
  • 可能对明文进行主动攻击

因此,此模式适于加密小消息。 

秘钥必须为16进制

encryptData() {
      // 此处key为16进制
      let key = '385f33cb91484b04a177828829081ab7';
      console.log('密钥:', key);
      // key格式化处理
      key = CryptoJS.enc.Utf8.parse(key);
      // 加密内容
      const polyGonGeoJSON = {
        type: 'Feature',
        properties: {},
        geometry: {
          type: 'Polygon',
          coordinates: [
            [
              [106, 33],
              [108.03955078125, 32.2313896627376],
              [108.25927734375, 33.15594830078649],
              [106, 33]
            ]
          ]
        }
      };
      const content = JSON.stringify(polygonGeojson);
      console.log('加密前:', polygonGeojson);
      // 加密方法
      const encryptedContent = CryptoJS.AES.encrypt(content, key, {
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
      });
      const encStr = encryptedContent.ciphertext.toString();
      console.log('加密后:', encStr);
      // 解密方法
      const decryptedContent = CryptoJS.AES.decrypt(
        CryptoJS.fORMat.Hex.parse(encStr),
        key,
        {
          mode: CryptoJS.mode.ECB,
          padding: CryptoJS.pad.Pkcs7
        }
      );
      console.log(
        '解密:',
        JSON.parse(CryptoJS.enc.Utf8.stringify(decryptedContent))
      );
    }

AES算法的CBC模式加密-设置秘钥和偏移量

CBC(Cipher Block Chaining,加密块链)模式 

优点:  

  • 不容易主动攻击
  • 安全性好于ECB
  • 适合传输长度长的报文,是SSL、IPSec的标准。 

缺点:  

  • 不利于并行计算
  • 误差传递
  • 需要初始化向量IV

CBC模式前、后端需要确定偏移量的值,并且保持一致,这样才能确保后端解密成功。

    encryptData() {
      // 此处key为16进制
      let key = '385f33cb91484b04a177828829081ab7';
      console.log('密钥:', key);
      // key格式化处理
      key = CryptoJS.enc.Utf8.parse(key);
 
      // 偏移量长度为16位, 注:偏移量需要与后端定义好,保证一致
      let iv_key = '37fa77f6a3b0462d';
      let iv = CryptoJS.enc.Utf8.parse(iv_key);
      // 加密内容
      const polygonGeojson = {
        type: 'Feature',
        properties: {},
        geometry: {
          type: 'Polygon',
          coordinates: [
            [
              [106, 33],
              [108.03955078125, 32.2313896627376],
              [108.25927734375, 33.15594830078649],
              [106, 33]
            ]
          ]
        }
      };
      const content = JSON.stringify(polygonGeojson);
      console.log('加密前:', polygonGeojson);
      // 加密方法
      const encryptedContent = CryptoJS.AES.encrypt(content, key, {
        iv: iv,
        mode: CryptoJS.mode.ECB,
        padding: CryptoJS.pad.Pkcs7
      });
      const encStr = encryptedContent.ciphertext.toString();
      console.log('加密后:', encStr);
      // 解密方法
      const decryptedContent = CryptoJS.AES.decrypt(
        CryptoJS.format.Hex.parse(encStr),
        key,
        {
          iv: iv,
          mode: CryptoJS.mode.ECB,
          padding: CryptoJS.pad.Pkcs7
        }
      );
      console.log(
        '解密:',
        JSON.parse(CryptoJS.enc.Utf8.stringify(decryptedContent))
      );
    }

参考:

https://www.cnblogs.com/cndarren/p/15108270.html

Https://blog.csdn.net/qq_40323256/article/details/116947888

到此这篇关于Vue中使用crypto-js AES对称加密算法实现加密解密的文章就介绍到这了,更多相关Vue crypto-js AES对称加密解密内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Vue中使用crypto-jsAES对称加密算法实现加密解密

本文链接: https://www.lsjlt.com/news/143686.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Vue中使用crypto-jsAES对称加密算法实现加密解密
    目录 下载crypto-js加密解密数据AES算法的ECB模式加密-设置秘钥AES算法的CBC模式加密-设置秘钥和偏移量参考: 在数字加密算法中,通过可划分为对称...
    99+
    2022-11-13
  • Thinkphp 6 使用RSA非对称加密算法 对接口加密解密
    后台接口中 经常使用到加密算法 如何使用RSA 非对称加密 对数据进行加密传输 下载RSA 加密算法 php-Rsa算法下载 将下载好的RSA 算法 放入 到 TP6项目根目录下 exten...
    99+
    2023-09-17
    php 算法
  • 怎么用对称加密算法实现C#数据加密
    这篇文章主要讲解了“怎么用对称加密算法实现C#数据加密”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用对称加密算法实现C#数据加密”吧!以下是关于对称加密算法的C#数据加密实现代码,大家...
    99+
    2023-06-18
  • python对称加密算法怎么实现
    Python中可以使用cryptography库来实现对称加密算法。以下是一个使用AES加密算法的示例:pythonfrom cry...
    99+
    2023-10-18
    python
  • c# 实现RSA非对称加密算法
    目录  公钥与私钥  C#实现  公钥与私钥   公钥与私钥是成对的,一般的,我们认为的是公钥加密、私钥解密、私钥签名、公钥验证,有人说成私钥加密,公钥解密时不对的。   公钥与私钥...
    99+
    2022-11-12
  • Java 实现RSA非对称加密算法
    目录  公钥与私钥  Java实现  公钥与私钥   公钥与私钥是成对的,一般的,我们认为的是公钥加密、私钥解密、私钥签名、公钥验证,有人说成私钥加密,公钥解密时不对的。   公钥与...
    99+
    2022-11-12
  • C BlowFish对称加密算法详解
    1.算法原理 BlowFish算法基于Feistel网络,加密函数迭代执行16轮,分组长度为64位,密钥长度可以从32位到448位。算法由两部分组成,密钥扩展部分和数据加密部分,密钥...
    99+
    2022-11-12
  • 国密算法:利用python进行sm4算法的加解密,对称密钥
    本篇利用python中的gmssl库进行sm4算法的加解密演示。 国密算法sm4特点: 密钥长度:16bytes(128bits)分组长度和密钥长度均为128bits;是对称加密算法;分为ecb模式和...
    99+
    2023-09-02
    python 国密算法 sm4算法 对称密钥 gmssl
  • vue项目使用md5加密、crypto-js加密、国密sm3及国密sm4的方法
    目录方法一:md5加密方法二:crypto-js 加密解密方法三:国密sm3方法四:国密sm4写在后面:项目中涉及到一些加密解密的需求,了解并尝试了几种加密解密方法,以下: 方法一:...
    99+
    2022-12-08
    vue中md5加密 vue使用crypto-js加密 vue 国密sm3
  • Golang实现AES对称加密算法实例详解
    目录前言前置知识生成随机数生成随机字符串加密和解密加密解密总结前言 安全总是相对的,对于敏感数据最好要有一定保护措施,尤其是在线数据,通过加密可转换信息为编码,从而防止非法获取。对开...
    99+
    2023-02-21
    golang 对称加密 go语言aes加密 对称加密 aes
  • 详解PHP使用非对称加密算法RSA
    目录加密的类型非对称加密算法具体实现1、加密解密的第一步2、PHP的加密解密类库调用demo加密的类型 在日常设计及开发中,为确保数据传输和数据存储的安全,可通过特定的算法,将数据明...
    99+
    2022-11-12
  • Golang如何实现AES对称加密算法
    本篇内容主要讲解“Golang如何实现AES对称加密算法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Golang如何实现AES对称加密算法”吧!前置知识在正式学习加密解密之前,首先看看如何生成...
    99+
    2023-07-05
  • Python使用Crypto库实现加密解密的示例详解
    目录一:crypto库安装二:python使用crypto1:crypto的加密解密组件des.py2:crypto组件使用知识补充一:crypto库安装 pycrypto,pycr...
    99+
    2023-01-11
    Python Crypto加密解密 Python Crypto加密 Python Crypto解密 Python Crypto
  • 如何使用Java实现RSA非对称加密算法
    这篇文章主要介绍如何使用Java实现RSA非对称加密算法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、非对称加密非对称加密算法是一种密钥的保密方法。非对称加密算法需要两个密钥:公开密钥(publickey:简称公...
    99+
    2023-06-15
  • 教你用Java实现RSA非对称加密算法
    目录一、非对称加密二、RSA算法三、RSA算法Java语言实现一、非对称加密 非对称加密算法是一种密钥的保密方法。 非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥...
    99+
    2022-11-12
  • python实现RSA加密(解密)算法
    RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。 今天只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击...
    99+
    2022-06-04
    算法 python RSA
  • PHP怎么使用OpenSSL加密中的非对称加密
    这篇文章主要介绍了PHP怎么使用OpenSSL加密中的非对称加密,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。PHP的OpenSSL加密扩展学习:非对称加密生成私钥通过之前的...
    99+
    2023-06-15
  • JavaScript利用crypto模块实现加解密
    目录一、 散列(哈希)算法1、如何获取所有的散列算法2、使用方法3、散列算法例子4、多次update二、HMac 算法三、对称AES加密1、如何加密2、如何解密一、 散列(...
    99+
    2023-02-10
    JavaScript crypto加解密 JavaScript crypto JavaScript 加解密
  • python实现的AES双向对称加密解密与用法分析
    本文实例讲述了python实现的AES双向对称加密解密与用法。分享给大家供大家参考,具体如下: 高级加密标准(Advanced Encryption Standard,AES),在密码学中又称Rijndae...
    99+
    2022-06-04
    对称 双向 加密解密
  • 为什么使用对称算法加密数据
    使用对称算法加密数据的原因因为对称加密算法加密速度快,对称性加密通常在消息发送方需要加密大量数据时使用,算法公开、计算量小、加密速度快、加密效率高,数据加密时密钥需要双方都知道,且密钥在网络上传输是不安全的;而非对称加密算法则是利用大质数难...
    99+
    2022-10-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作