CryptoJS 加密算法类库AES(二)

2024-03-17 16:18

本文主要是介绍CryptoJS 加密算法类库AES(二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

AES 加解密介绍

AES 加密语法

AES 解密语法

案例1:文本加解密

案例2:对象加解密


  • AES 加解密都需要使用 toString() 方法把它们转换成字符串,解密时需要把字符串编译成 Utf8 编码格式
  • 对象、数组加密原始数据需要转换成 JSON 字符串,使用 JSON.stringify()
  • 对象、数组解密后的数据需要使用 JSON.parse() 解析

AES 加解密介绍

高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加解密用相同的密钥,具体加密流程如下图:

  • 明文P:
    • 没有经过加密的数据
  • 密文C:
    • 经加密函数处理后的数据
  • 密钥K:
    • 用来加密明文密码,在对称加密算法中,加解密密钥相同
    • 密钥是接收方与发送方协商产生,不可以直接在网络上传输,否则会导致密钥泄漏
    • 密钥通过非对称加密算法加密密钥,再通过网络传输给对方,或者直接面对面商量密钥
    • 密钥绝对不可以泄漏,否则会被攻击者还原密文,窃取机密数据
  • 对称加密算法:
    • 加密和解密用到的密钥是相同的,这种加密方式加密速度非常快,适合经常发送数据的场合。缺点是密钥的传输比较麻烦
  • 非对称加密算法:
    • 加密和解密用的密钥是不同的,这种加密方式是用数学上的难解问题构造的,通常加密解密的速度比较慢,适合偶尔发送数据的场合。优点是密钥传输方便。常见的非对称加密算法为RSA、ECC和EIGamal

AES 加密语法

CryptoJS.AES.encrypt('待加密字符串', '密钥').toString()

AES 解密语法

CryptoJS.AES.decrypt('待解密字符串', '密钥').toString(CryptoJS.enc.Utf8)

案例1:文本加解密

  • 加密
    • ciphertext 密文:经加密函数处理后的数据
const ciphertext = CryptoJS.AES.encrypt('my message', 'secret key').toString()
  • 解密
    • plaintext 明文:没有经过加密的数据
const plaintext = CryptoJS.AES.decrypt(ciphertext, 'secret key').toString(CryptoJS.enc.Utf8)

案例2:对象加解密

  • 原始数据
const arr = [{id: 1}, {id: 2}]
const strArr = JSON.stringify(arr)
  • 加密
const ciphertext = CryptoJS.AES.encrypt(strArr, 'secret key').toString()
  • 解密
const plaintext = CryptoJS.AES.decrypt(ciphertext, 'secret key').toString(CryptoJS.enc.Utf8)
const plaintextArr = JSON.parse(plaintext)

参考资料:

AES加密算法的详细介绍与实现_TimeShatter的博客-CSDN博客_aes加密AES简介高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图: 下面简单介绍下各个部分的作用与意义:明文P 没有经过加密的数据。密钥K 用来加密明文的密码,在对称加密算法中,加密与解密的密钥是相同的。密钥为接收方与发送方协商产生https://blog.csdn.net/qq_28205153/article/details/55798628

理解AES加密解密的使用方法_技术改变生活-CSDN博客_aes用法很多人对于AES加密并不是很了解,导致互相之间进行加密解密困难。本文用简单的方式来介绍AES在使用上需要的知识,而不涉及内部算法。最后给出例子来帮助理解AES加密解密的使用方法。https://blog.csdn.net/vieri_32/article/details/48345023

这篇关于CryptoJS 加密算法类库AES(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/819467

相关文章

Java 后端接口入参 - 联合前端VUE 使用AES完成入参出参加密解密

加密效果: 解密后的数据就是正常数据: 后端:使用的是spring-cloud框架,在gateway模块进行操作 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>30.0-jre</version></dependency> 编写一个AES加密

Java基础回顾系列-第五天-高级编程之API类库

Java基础回顾系列-第五天-高级编程之API类库 Java基础类库StringBufferStringBuilderStringCharSequence接口AutoCloseable接口RuntimeSystemCleaner对象克隆 数字操作类Math数学计算类Random随机数生成类BigInteger/BigDecimal大数字操作类 日期操作类DateSimpleDateForma

王立平--AES加密图片实现 SkImageDecoder::Factory return null

这个问题是在加密图片,存入sd卡,在解密出来展示,出现的。我个人研究了很久没解决。最后经过高人指点,终于解决了。 在此,拿出来分享,希望各位少走弯路。 我之前的设计思路是:(可以不看哦) 1.把图片从drawable读入成bitmap 2.bitmap-->byte 3.调用AES的byte加密算法。 4.加密成byte,在转化为string 5,把string存入sd卡。

AES加密算法说明

首先,我们得了解AES加密算法的一些基本概念。AES是一种对称加密算法,所谓对称,是说它的加密、解密过程使用相同的密钥。还有非对称加密算法,例如RSA,加密解密使用的是公私钥对。 AES同时是一种分组加密算法,分组的长度一般是16字节(128bit)。分组是什么意思呢?假设我有一段很长的明文T,我没法用AES加密整个T,只能将T分成若干16byte的明文组,接着对这些明文组逐个进行加密,得到一堆密

总结Js方法工具类库,总有你需要的方法

总结Js方法工具类库,总有你需要的方法 前言   前言 实际开发工程中,会遇到一些重复的逻辑功能处理或者说是比较繁琐的前端函数。粗略整理了一下,希望对正在浏览的你有所帮助,也希望帮助新入行的小白们解决一下工作中的负担(毕竟谁都是从小白一步一步走过来的,所经受的苦在座的各位也不必我去言说) 详细内容-转至在码圈

iOS中引用第三方类库的方法总结

在我们开发iOS应用时,会经常使用到很多第三方开源类库,比如AFNetworking、FMDB等等 目前,引用第三方类库的方法有4种。比较推荐方法二和方法三,根据不同的第三方类库选择不同的方法。 1.cocoaPods 通过cocoaPods引入第三方类库 cocoaPods是iOS开发中最常用的类库管理工具,引用类库和更新类库都很方便,只需要一行简单的命令即可,统一管

ios中导入第三方类库

CocoaPods是什么? 当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等。可能某个类库又用到其他类库,所以要使用它,必须得另外下载其他类库,而其他类库又用到其他类库,“子子孙孙无穷尽也”,这也许是比较特殊的情况。总之小编的意思就是,手动一个个去下载所需类库十分麻烦。另外一种常见情况是,你项目中用到的类库有更新,你必须得重新下载新版本,重

redmine安装企业微信和钉钉插件遇到curl类库问题

我开发的这个插件地址如下: 官方注册地址: http://www.redmine.org/plugins/redmine_work_wechat 代码库: https://bitbucket.org/39648421/redmine_work_wechat 最近部署和安装全新的开发环境,安装时有一些备忘: 有些系统的环境没有curl底层支持库,比如linux下需要libcurl.so,则在启动服

php生成二维码类库

代码请查看如下网址: https://github.com/1290800466/phpqrcode.git

PHP人们币金额小写转大写类库

MoneyConvertor 类: MoneyConvertor.php  <?php/** * MoneyConvertor Library For PHP* 人民币大小写转换类* --------------------------------------------------- */final class MoneyConvertor {//大写数字private $NUM