当前位置: 首页 > news >正文

CryptoJS库中WordArray对象支持哪些输出格式?除了toString() 方法还有什么方法可以输出吗?WordArray对象的作用是什么?

前言:这里只说js用的CryptoJS库里的相关内容,只用js来进行代码操作和讲解。

           这里网上相关的帖子很少,不得已问了很长时间AI

想引用CryptoJS库情况分两种,一种是html引用,另一种是在Nodejs里引用。

一、引用CryptoJS库

1.在html里引用就用script标签里放CryptoJS的cdn即可

<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"></script>

2.在Nodejs里使用就用下面的代码,当然,你用之前得先用cmd把库下载到本地,具体步骤网上查询。

const CryptoJS = require('crypto-js');

二、WordArray对象

什么是WordArray对象呢,我具体问了下GPT,下面是具体解释:

CryptoJS 中,所有的加密操作和字节数组都由 WordArray 类型表示。CryptoJS 的加密和解密过程本质上都在处理字节数据(WordArray),所以无论你使用的是哪种加密算法,解密后的结果仍然是 字节数组WordArray 对象)。所有通过 CryptoJS 加密的算法(如 AES、DES、Triple DES、RC4、Rabbit 等)都返回一个 WordArray 对象,它们的解密过程同样返回一个 WordArray 类型的数据。因此,你可以对这些算法的解密结果使用相同的 .toString() 方法来获取不同的编码格式。

另外,WordArray对象还有个重要作用,即解密过程中的数据都保存在 WordArray 类型里

在解密过程中,解密的结果通常是一个 WordArray 对象,它包含了解密后的字节数据。这个 WordArray 对象可以通过 .toString() 方法转换为其他格式的字符串(如 UTF-8、Hex、Base64 等)

无论你使用 CryptoJS 执行哪种加密或解密算法(例如 AES、DES、Triple DES、RC4 等),它们都会以 WordArray 类型 存储数据。


WordArray 类型的基本概念

CryptoJS 中的 WordArray 是一种 字节数组 的表示,它被用于存储加密或解密过程中的 二进制数据(比如密文、明文、密钥、初始化向量等)。WordArrayCryptoJS 库的核心数据类型之一,它的结构有两个属性:

  1. words:这是一个数组,包含了数据的字节值。每个 word 是一个 32 位的整数(4 个字节)。所以,words 数组实际上代表了所有字节数据的集合。
  2. sigBytes:这个属性表示字节数据的总字节数(例如:16 字节、32 字节等)。它记录的是有效字节的长度。

想打印WordArray类型的变量也简单,下面的代码就可以打印(不要忘了先引用CryptoJS)

let key = CryptoJS.enc.Utf8.parse('f5d965df75336270');
console.log(key);  // 输出的会是一个字节数组,包含字符对应的字节值

打印出就是下面截图这样

三、WordArray储存的解密结果如何转换不同的编码格式

上面已经知道了,解密结果储存在WordArray对象里,我们可以将解密结果转换为不同的编码格式,比如 Base64, Hex, 或者 字节数组 等。

// 假设你已经有了加密的密文和相应的解密配置
let key = CryptoJS.enc.Utf8.parse('f5d965df75336270');
let iv = CryptoJS.enc.Utf8.parse('97b60394abc2fbe1');
let encryptedData = result;  // 假设 result 是 Base64 编码的密文// 解密
let decryptedData = CryptoJS.AES.decrypt(encryptedData, key, {iv: iv,mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.NoPadding
});// 转换为不同的格式
let plaintextUtf8 = decryptedData.toString(CryptoJS.enc.Utf8);  // 明文字符串
let decryptedHex = decryptedData.toString(CryptoJS.enc.Hex);   // 十六进制字符串
let decryptedBase64 = decryptedData.toString(CryptoJS.enc.Base64);  // Base64 字符串
let decryptedLatin1 = decryptedData.toString(CryptoJS.enc.Latin1);  // Latin1 编码字符串
let decryptedBytes = decryptedData.words;  // 字节数组// 输出不同的格式
console.log('UTF-8:', plaintextUtf8);
console.log('Hex:', decryptedHex);
console.log('Base64:', decryptedBase64);
console.log('Latin1:', decryptedLatin1);
console.log('Bytes:', decryptedBytes);

总结:

  • .toString(CryptoJS.enc.Utf8):将字节数组转换为 UTF-8 编码的字符串,这个一般最常用。
  • .toString(CryptoJS.enc.Hex):将字节数组转换为十六进制字符串。
  • .toString(CryptoJS.enc.Base64):将字节数组转换为 Base64 编码的字符串。
  • .toString(CryptoJS.enc.Latin1):将字节数组转换为 Latin1 编码的字符串。
  • .words:直接获取字节数据(以字节数组的形式)。

相关文章:

CryptoJS库中WordArray对象支持哪些输出格式?除了toString() 方法还有什么方法可以输出吗?WordArray对象的作用是什么?

前言&#xff1a;这里只说js用的CryptoJS库里的相关内容&#xff0c;只用js来进行代码操作和讲解。 这里网上相关的帖子很少&#xff0c;不得已问了很长时间AI 想引用CryptoJS库情况分两种&#xff0c;一种是html引用&#xff0c;另一种是在Nodejs里引用。 一、引用CryptoJS库…...

第六次作业

一.对比 LVS 负载均衡群集的 NAT 模式和 DR 模式&#xff0c;比较其各自的优势 。 LVS-NAT模式的优势 配置简单&#xff1a;NAT模式的配置相对容易&#xff0c;无需复杂的网络设置&#xff0c;适合初学者和小型网络环境。 网络架构灵活&#xff1a;由于使用了NAT技术&#xf…...

八、Spring Boot:RESTful API 应用

创建第一个 Spring Boot RESTful API 应用 在现代 Web 开发中&#xff0c;RESTful API 是一种非常流行的设计风格&#xff0c;它基于 HTTP 协议&#xff0c;提供了简单、灵活的方式来构建网络应用。Spring Boot 作为一款强大的微服务框架&#xff0c;提供了丰富的工具和支持&a…...

Pytorch实现之混合成员GAN训练自己的数据集

简介 简介:提出一种新的MMGAN架构,使用常见生成器分布的混合对每个数据分布进行建模。由于生成器在多个真实数据分布之间共享,高度共享的生成器(通过混合权重反映)捕获分布的公共方面,而非共享的生成器捕获独特方面。 论文题目:MIXED MEMBERSHIP GENERATIVE ADVERSARI…...

微信小程序网络请求与API调用:实现数据交互

在前几篇文章中,我们学习了微信小程序的基础知识、数据绑定、事件处理以及页面导航与路由。这些知识帮助我们构建了具备基本交互功能的小程序。然而,一个完整的应用通常需要与服务器进行数据交互,例如获取用户信息、提交表单数据等。本文将深入探讨微信小程序的网络请求与AP…...

Cramér-Rao界:参数估计精度的“理论底线”

Cramr-Rao界&#xff1a;参数估计精度的“理论底线” 在统计学中&#xff0c;当我们用数据估计一个模型的参数时&#xff0c;总希望估计结果尽可能精确。但精度有没有一个理论上的“底线”呢&#xff1f;答案是有的&#xff0c;这就是Cramr-Rao界&#xff08;Cramr-Rao Lower …...

nv docker image 下载与使用命令备忘

1&#xff0c;系统需求 Requirements for GPU Simulation GPU Architectures Volta, Turing, Ampere, Ada, Hopper NVIDIA GPU with Compute Capability 7.0 CUDA 11.x (Driver 470.57.02), 12.x (Driver 525.60.13) Supported Systems CPU architectures x86_64, ARM…...

C#连接sql server

连接时&#xff0c;出现如下提示&#xff1a; ERROR [IM014] [Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中&#xff0c;驱动程序和应用程序之间的体系结构不匹配 原因是odbc的驱动和应用程序的架构不一致。我的odbc如下所示&#xff1a; 显示为64位&#xff0c;而c#程序显…...

汽车智能制造企业数字化转型SAP解决方案总结

一、项目实施概述 项目阶段划分&#xff1a; 蓝图设计阶段主数据管理方案各模块蓝图设计方案下一阶段工作计划 关键里程碑&#xff1a; 2022年6月6日&#xff1a;项目启动会2022年12月1日&#xff1a;系统上线 二、总体目标 通过SAP实施&#xff0c;构建研产供销协同、业财一…...

vue2项目打包后js文件过大, 首次加载缓慢

vue2项目打包后js文件过大, 首次加载缓慢 安装插件 npm i compression-webpack-plugin6.1.1 -D配置vue.config.js const CompressionWebpackPlugin require(compression-webpack-plugin)module.exports {configureWebpack: {plugins:[new CompressionWebpackPlugin({filen…...

数据安全_笔记系列06:数据生命周期管理(存储、传输、使用、销毁)深度解析

数据安全_笔记系列06&#xff1a;数据生命周期管理&#xff08;存储、传输、使用、销毁&#xff09;深度解析 数据生命周期管理&#xff08;存储、传输、使用、销毁&#xff09;详解 数据生命周期管理&#xff08;Data Lifecycle Management, DLM&#xff09;是围绕数据从创建…...

机器学习数学基础:32.斯皮尔曼等级相关

斯皮尔曼等级相关教程 一、定义与原理 斯皮尔曼等级相关系数&#xff08;Spearman’s rank - correlation coefficient&#xff09;&#xff0c;常用 ρ \rho ρ表示&#xff0c;是一种非参数统计量&#xff0c;用于衡量两个变量的等级之间的关联程度。它基于变量的秩次&…...

【AI-39】深度学习框架包含哪些内容

深度学习框架&#xff08;如 PyTorch、TensorFlow&#xff09;是用于构建和训练神经网络的工具&#xff0c;它们提供了底层的计算库、优化算法、张量操作等功能。而transformers库是基于这些深度学习框架构建的高级库&#xff0c;它封装了许多预训练模型和相关的工具&#xff0…...

uniapp h5支付宝支付

第1种&#xff0c;创建个div插入到body中 const div document.createElement(div); div.innerHTML 后端返回的form表单字符串; document.body.appendChild(div); document.forms[0].submit(); div.remove(); 第2种 <template> <view v-html"formAliPay"…...

探索YOLO技术:目标检测的高效解决方案

第一章&#xff1a;计算机视觉中图像的基础认知 第二章&#xff1a;计算机视觉&#xff1a;卷积神经网络(CNN)基本概念(一) 第三章&#xff1a;计算机视觉&#xff1a;卷积神经网络(CNN)基本概念(二) 第四章&#xff1a;搭建一个经典的LeNet5神经网络(附代码) 第五章&#xff1…...

vmware虚拟机安装使用教程【视频】

vmware虚拟机安装使用教程【视频】 VMware是一款强大的桌面级虚拟化软件&#xff0c;它允许用户在单个计算机上同时运行多个操作系统&#xff0c;每个操作系统都被称为一个虚拟机&#xff08;VM&#xff09;。这种技术不仅方便了软件测试、系统开发&#xff0c;还便于资源管理&…...

2025系统架构师(一考就过):案例之三:架构风格总结

软件架构风格是描述某一特定应用领域中系统组织方式的惯用模式&#xff0c;按照软件架构风格&#xff0c;物联网系统属于&#xff08; &#xff09;软件架构风格。 A:层次型 B:事件系统 C:数据线 D:C2 答案&#xff1a;A 解析&#xff1a; 物联网分为多个层次&#xff0…...

渗透测试实验

1、seacmsv9注入管理员密码 获取管理员账号&#xff08;name&#xff09; http://www.test2.com/comment/api/index.php?gid1&page2&rlist[]%27,%20extractvalue(1,%20concat_ws(0x20,%200x5c,(select%20(name)from%20sea_admin))),%27 2、获取管理员密码 http://www…...

CCA社群共識聯盟正式上線

2025年2月25日——BAF區塊鏈產業聯盟基金會旗下的CCA社群共識聯盟業務於今日正式全網啟動。作為區塊鏈行業的創新平台,CCA社群共識聯盟秉承誠信、公平、共贏的核心原則,致力於為全球社群夥伴打造一個更加開放、透明與高效的合作生態,推動區塊鏈產業的健康發展。 創新平台,助力…...

京东-零售-数据研发面经【附答案】

近期&#xff0c;有参加春招的同学和我交流了他的面试历程&#xff0c;我针对这些内容进行了细致的总结与梳理&#xff0c;并在此分享出来&#xff0c;希望能助力大家学习与借鉴。 1.八股文 1&#xff09;HashMap的底层原理是什么【见V6.0面试笔记 Java基础部分第19题】 2&am…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

自然语言处理——循环神经网络

自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元&#xff08;GRU&#xff09;长短期记忆神经网络&#xff08;LSTM&#xff09…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

mac 安装homebrew (nvm 及git)

mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用&#xff1a; 方法一&#xff1a;使用 Homebrew 安装 Git&#xff08;推荐&#xff09; 步骤如下&#xff1a;打开终端&#xff08;Terminal.app&#xff09; 1.安装 Homebrew…...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上&#xff0c;对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...