(叁)前端实现加密的方式:AES 加密(实现的两种方式)

news2024/12/25 5:48:29

前端实现加密:

  • Ⅰ、AES 加密:
    • 1、使用 AES 加密前的准备工作:
      • 其一、安装 crypto-js :
        • A、安装命令:
        • B、成功安装后的截图:
    • 2、实现 AES 加密的方式一:
      • 其一、在项目中创建 crypto.js 文件:
        • A、crypto.js 文件位置截图为:
        • B、代码为:
      • 其二、在页面中引入并使用:
        • A、在页面引入 crypto-js 文件:
        • B、使用的加密解密的过程:
          • a、随机十六位密匙的加密解密操作:
          • b、随机十六位密匙的加密解密截图:
          • c、固定十六位密匙的加密解密操作:
          • d、固定十六位密匙的加密解密截图:
    • 3、实现 AES 加密的方式二:
      • 其一、在项目中创建 crypto.js 文件:
        • A、crypto.js 文件位置截图为:
        • B、代码为:
      • 其二、在页面中引入并使用:
        • A、在页面引入 crypto-js 文件:
        • B、使用的加密解密的过程:
          • a、固定十六位密匙的加密解密操作:
          • b、固定十六位密匙的加密解密截图:
  • Ⅱ、寄语:

Ⅰ、AES 加密:

1、使用 AES 加密前的准备工作:

其一、安装 crypto-js :

A、安装命令:

npm install crypto-js

B、成功安装后的截图:

// 在 package.json 文件内有安装后的依赖(但版本不一定是 ^4.2.0);

在这里插入图片描述

2、实现 AES 加密的方式一:

其一、在项目中创建 crypto.js 文件:

A、crypto.js 文件位置截图为:

在这里插入图片描述

B、代码为:
 
 
import CryptoJS from "crypto-js";
 
export default {
  //随机生成指定数量的16进制key
  generatekey(num) {
    let library =
      "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    let key = "";
    for (var i = 0; i < num; i++) {
      let randomPoz = Math.floor(Math.random() * library.length);
      key += library.substring(randomPoz, randomPoz + 1);
    }
    return key;
  },
 
  //加密
  encrypt(word, keyStr) {
    keyStr = keyStr ? keyStr : "ylvector12345678"; //判断是否存在key,不存在就用定义好的key
    var key = CryptoJS.enc.Utf8.parse(keyStr);
    var srcs = CryptoJS.enc.Utf8.parse(word);
    var encrypted = CryptoJS.AES.encrypt(srcs, key, {
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7
    });
    return encrypted.toString();
  },
  
  //解密
  decrypt(word, keyStr) {
    keyStr = keyStr ? keyStr : "ylvector12345678";
    var key = CryptoJS.enc.Utf8.parse(keyStr);
    var decrypt = CryptoJS.AES.decrypt(word, key, {
      mode: CryptoJS.mode.ECB,
      padding: CryptoJS.pad.Pkcs7
    });
    return CryptoJS.enc.Utf8.stringify(decrypt).toString();
  }
};


其二、在页面中引入并使用:

A、在页面引入 crypto-js 文件:

// 注意:以实际引入的 crypto-js 文件地址为主;

在这里插入图片描述

B、使用的加密解密的过程:
a、随机十六位密匙的加密解密操作:


    // 用AES给密码加密
    const keys = Crypto.generatekey(16);//ylvector
    //如果是对象/数组的话,需要先JSON.stringify转换成字符串,第二个值是加密的方式key
    // const encrypts = Crypto.encrypt(username.value,'ylvector12345678');
    const encrypts = Crypto.encrypt(username.value,keys);

    // const decrypt = Crypto.decrypt(encrypts, 'ylvector12345678');
    const decrypt = Crypto.decrypt(encrypts, keys);


    console.log(username.value,1111111)
    console.log(encrypts,222222)
    console.log(decrypt,333333333);

b、随机十六位密匙的加密解密截图:

// 截图一:此时随机产生的生成值,不是固定值为:rKAq5sr4UrRdmDAr+8epHA==

在这里插入图片描述

// 截图二:此时随机产生的生成值,不是固定值为:3BVfDdolhXyB1E79iBQUzA==

在这里插入图片描述

c、固定十六位密匙的加密解密操作:


     // 用AES给密码加密
     // const keys = Crypto.generatekey(16);//ylvector
     //如果是对象/数组的话,需要先JSON.stringify转换成字符串,第二个值是加密的方式key
     const encrypts = Crypto.encrypt(username.value,'ylvector12345678');
     // const encrypts = Crypto.encrypt(username.value,keys);

     const decrypt = Crypto.decrypt(encrypts, 'ylvector12345678');
     // const decrypt = Crypto.decrypt(encrypts, keys);


     console.log(username.value,1111111)
     console.log(encrypts,222222)
     console.log(decrypt,333333333);


d、固定十六位密匙的加密解密截图:

// 此时无论怎么生成,固定的生成值为:zweKZ45kJyI6HASVc8DQSQ==

在这里插入图片描述

3、实现 AES 加密的方式二:

其一、在项目中创建 crypto.js 文件:

A、crypto.js 文件位置截图为:

在这里插入图片描述

B、代码为:
 
 
import CryptoJS from "crypto-js";
 
export default {
  //加密
  encode(str = ''){
    // utf-8 转换
    let message = CryptoJS.enc.Utf8.parse(str);
    let secret_key = CryptoJS.enc.Utf8.parse("12345678ABCDEFGH");
    let iv = CryptoJS.enc.Utf8.parse("ABCDEFGH12345678");
    // Encrypt
    var ciphertext = CryptoJS.AES.encrypt(message, secret_key, { 
        iv: iv,
        mode: CryptoJS.mode.CBC, 
        padding: CryptoJS.pad.Pkcs7
    });
    return ciphertext.toString();
  },
  
  //解密
  decode(str = ''){
    // utf-8 转换
    let message = str;
    let secret_key = CryptoJS.enc.Utf8.parse("12345678ABCDEFGH");
    let iv = CryptoJS.enc.Utf8.parse("ABCDEFGH12345678");
    
    // Decrypt
    var ciphertext  = CryptoJS.AES.decrypt(message.toString(), secret_key,{
        iv: iv,
        mode: CryptoJS.mode.CBC, 
        padding: CryptoJS.pad.Pkcs7 
    });
    return ciphertext.toString(CryptoJS.enc.Utf8);
  }
};


其二、在页面中引入并使用:

A、在页面引入 crypto-js 文件:

// 注意:以实际引入的 crypto-js 文件地址为主;

在这里插入图片描述

B、使用的加密解密的过程:
a、固定十六位密匙的加密解密操作:

     // 用AES给密码加密
     const encrypts = Crypto.encode(username.value);

     // 用AES给密码解密
     const decrypt = Crypto.decode(encrypts);

     console.log(username.value,1111111)
     console.log(encrypts,222222)
     console.log(decrypt,333333333);

b、固定十六位密匙的加密解密截图:

// 此时无论怎么生成,固定的生成值为:SeaNt1TTsdmvw7u24Q99Ng==

在这里插入图片描述

Ⅱ、寄语:

非常荣幸能作为该文章专栏的博主,关于上述问题不懂的可以随时滴滴,一定会及时回复;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2265117.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

kubernates实战

使用k8s来部署tomcat 1、创建一个部署&#xff0c;并指定镜像地址 kubectl create deployment tomcat6 --imagetomcat:6.0.53-jre82、查看部署pod状态 kubectl get pods # 获取default名称空间下的pods kubectl get pods --all-namespaces # 获取所有名称空间下的pods kubect…

自动化测试框架playwright 常见问题和解决方案

自动化课程已经讲完了playwright框架&#xff0c;很多同学跃跃欲试&#xff0c;所谓实践出真知&#xff0c;这不在实践中就要到了一些问题&#xff0c;小编也给大家整理出来了&#xff0c;送个有需要的同学&#xff0c;记得点赞收藏哦~~ 01安装问题 问题描述&#xff1a; 在安…

清华、智谱团队:探索 RLHF 的 scaling laws

基于人类反馈的强化学习&#xff08;RLHF&#xff09;是优化大语言模型&#xff08;LLM&#xff09;行为的关键技术&#xff0c;能够让模型更符合人类偏好和需求&#xff0c;提升生成质量。 然而&#xff0c;目前关于 RLHF 的 scaling&#xff08;扩展&#xff09;潜力研究仍然…

八股(One Day one)

最近老是看到一些面试的视频&#xff0c;对于视频内部面试所提到的八股文&#xff0c;感觉是知道是什么&#xff0c;但是要说的话&#xff0c;却又不知道该怎么说&#xff08;要不咋称之为八股文呢&#xff09;&#xff0c;所以就想到写一篇八股文总结的博客&#xff0c;以便进…

springboot创建web项目

一、创建项目 二、导入依赖&#xff08;pom.xml&#xff09; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schem…

LeetCode 343.整数拆分

1.题目要求: 2.题目代码: class Solution { public:int integerBreak(int n) {//先确定dp数组vector<int> dp;//1.确定dp数组的含义//2.确定dp的递推公式//3.初始化dp数组//4.遍历顺序dp.resize(n 1);dp[0] 0;dp[1] 0;dp[2] 1;for(int i 3;i < n;i){for(int j …

Postman最新详细安装及使用教程【附安装包】

一、Postman介绍 ‌Postman是一个功能强大的API测试工具&#xff0c;主要用于模拟和测试各种HTTP请求&#xff0c;支持GET、POST、PUT、DELETE等多种请求方法。‌通过Postman&#xff0c;用户可以发送请求并查看返回的响应&#xff0c;检查响应的内容和状态&#xff0c;从而验…

开源 JS PDF 库比较

原文查看&#xff1a;开源JavaScript PDF Library对比 对于需要高性能、复杂功能或强大支持处理复杂 PDF 的项目&#xff0c;建议选择商业​​ PDF 库, 如ComPDFKit for Web。但是&#xff0c;如果您的目标只是在 Web 应用程序中显示 PDF&#xff0c;则可以使用几个可靠的开源…

如何利用AWS监听存储桶并上传到tg bot

业务描述&#xff1a; 需要监听aws的存储中的最新消息&#xff0c;发送新的消息推送到指定tg的频道。 主要流程&#xff1a; 1.上传消息到s3存储桶&#xff08;不做具体描述&#xff09; 2.通过aws的lambda监听s3存储桶的最新消息&#xff08;txt文件&#xff09; 3.将txt文件…

数据结构:双向循坏链表

目录 1.1双向循环链表的结构 2.双向链表功能的实现 2.1初始化链表 2.2销毁链表 2.3创建结点 2.4打印链表 2.5链表查找 2.6链表在pos的前面进行插入 2.7链表删除pos位置的节点 2.8链表的头插&#xff0c;头删 &#xff0c;尾插&#xff0c;尾删 1.1双向循环链表的结构 …

大数据技术原理与应用期末复习-代码

RDD&#xff1a; // 导入SparkConf和SparkContext类&#xff0c;用于配置和创建Spark上下文 import org.apache.spark.{SparkConf, SparkContext}// 定义一个名为TopN的对象 object TopN {def main(args: Array[String]): Unit {// 创建一个新的SparkConf对象&#xff0c;并设…

CNN和Transfomer介绍

文章目录 CNN和Transfomer介绍CNN和Transfomer的区别1. **基本概念**2. **数据处理方式**3. **模型结构差异**4. **应用场景区别** 自注意力机制1. **自注意力机制的概念**2. **自注意力机制的实现步骤**3. **自注意力机制的优势** Transformer结构组成1. **多头注意力层&#…

ArcGIS Pro 3.4新功能3:空间统计新特性,基于森林和增强分类与回归,过滤空间自相关

目录 应用 1&#xff1a;它是相关性还是托布勒第一定律&#xff1f; 应用 2&#xff1a;将空间带入非空间模型 结论 在 ArcGIS Pro 3.4 中&#xff0c;我们在新的空间组件实用程序&#xff08;Moran 特征向量&#xff09;工具集中发布了一个新工具 - 从字段过滤空间自相关。…

webserver log日志系统的实现

参考博客&#xff1a;https://blog.csdn.net/weixin_51322383/article/details/130474753 https://zhuanlan.zhihu.com/p/721880618 阻塞队列blockqueue 1、阻塞队列的设计流程是什么样的 它的底层是用deque进行管理的 阻塞队列主要是围绕着生产者消费者模式进行多线程的同步和…

深度学习实战之超分辨率算法(tensorflow)——ESPCN

espcn原理算法请参考上一篇论文&#xff0c;这里主要给实现。 数据集如下&#xff1a;尺寸相等即可 针对数据集&#xff0c;生成样本代码preeate_data.py import imageio from scipy import misc, ndimage import numpy as np import imghdr import shutil import os import…

Unity3d 基于UGUI和VideoPlayer 实现一个多功能视频播放器功能(含源码)

前言 随着Unity3d引擎在数字沙盘、智慧工厂、数字孪生等场景的广泛应用&#xff0c;视频已成为系统程序中展示时&#xff0c;不可或缺的一部分。在 Unity3d 中&#xff0c;我们可以通过强大的 VideoPlayer 组件和灵活的 UGUI 系统&#xff0c;将视频播放功能无缝集成到用户界面…

WebGAL 项目下载及安装教程

WebGAL 项目下载及安装教程 WebGAL A brand new web Visual Novel engine | 全新的网页端视觉小说引擎 [这里是图片001] 项目地址: https://gitcode.com/gh_mirrors/web/WebGAL 1、项目介绍 WebGAL 是一个全新的网页端视觉小说引擎&#xff0c;旨在提供美观、功能强大且易于…

虚幻引擎是什么?

Unreal Engine&#xff0c;是一款由Epic Games开发的游戏引擎。该引擎主要是为了开发第一人称射击游戏而设计&#xff0c;但现在已经被成功地应用于开发模拟游戏、恐怖游戏、角色扮演游戏等多种不同类型的游戏。虚幻引擎除了被用于开发游戏&#xff0c;现在也用于电影的虚拟制片…

Kubernetes 架构图和组件

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;历代文学&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;精通Java编程&#xff0c;高并发设计&#xf…

GESP2024年12月认证C++五级( 第三部分编程题(2))

参考程序&#xff1a; #include<bits/stdc.h> using namespace std; #define ll long long int n, m; int cnt[1010]; vector<int> cs[1010]; ll calc(int aim) {int cur_cnt cnt[1];ll res 0;vector<int> tmp;for (int i 2; i<n; i){int buy max((…