IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> AES再Java和js中的使用以及postman中使用Crypto解密接口数据 -> 正文阅读

[开发工具]AES再Java和js中的使用以及postman中使用Crypto解密接口数据

什么是AES

AES加密算法是密码学中的高级加密标准(Advanced Encryption Standard,AES),是一种区块加密标准。

AES加密方式简介

  1. AES使用128、192 和 256 位密钥,并且用 128 位(16字节)分组加密和解密数据

  2. AES的加密方式会将明文拆分成不同的块进行加密,例如一个256 位的数据用128的密钥加密,则分成

明文1(128)位明文2(128)位
密文1(128)位密文2(128)位
  1. 模式有CBC(有向量模式)和ECB(无向量模式),向量模式可以简单理解为偏移量,使用CBC模式需要定义一个IvParameterSpec对象(偏移量)–向量必须是一个与密钥长度相等的数据
  2. 填充模式

java使用Cipher步骤

  1. 新建Cipher对象时需要传入一个参数,参数格式algorithm/mode/padding,其中algorithm为必输项,algorithm有`algorithm,缺省的mode为ECB,缺省的padding为PKCS5Padding–使用CBC模式时必须传入padding

  2. 使用之前还需要初始化,,共三个参数(“加密模式或者解密模式”,“密匙”,“向量”)

  3. 调用数据转换:cipher.doFinal(content),其中content是一个byte数组

  4. 案例

    //解密
    private static void decrypt() {
        String qwe = "4001234512par1q2";
        String asd = "6u7i8q1w2e3r4t5y";
        String str = "eryuiouopoiportertrytrytu";
        try {
            // 创建cipher实例 参数按"算法/模式/填充模式" "AES/ECB/PKCS5Padding"
            Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
            SecretKeySpec keySpec = new SecretKeySpec(qwe.getBytes(),"AES");
            IvParameterSpec iv = new IvParameterSpec(asd.getBytes());
            //初始化cipher,需要三个参数
            //1)Cipher.ENCRYPT_MODE(加密模式)和 Cipher.DECRYPT_MODE(解密模式)
            //2)密钥:使用传入的盐构造一个密钥,可以使用SecretKeySpec、KeyGenerator和KeyPairGenerator创建密匙,其中secretKeySpec和KeyGenerator支持AES,DES,DESede三种加密算法创建密匙,KeyPairGenerator支持RSA加密算法创建密匙
            //3)使用CBC模式时必须传入该参数,该项目使用IvParameterSpec创建iv对象
            cipher.init(Cipher.DECRYPT_MODE,keySpec,iv);
            byte[] decode = Base64.getDecoder().decode(str);//先用Base64解密
            byte[] bytes = cipher.doFinal(decode);
            String s = new String(bytes, StandardCharsets.UTF_8);
            System.out.println(s);
        } catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidAlgorithmParameterException | InvalidKeyException | BadPaddingException | IllegalBlockSizeException e) {
            e.printStackTrace();
        }
    }
    

Js中使用Crypto

  1. 准备好密钥和偏移量

  2. 知道模式模式和填充模式,至关重要,关系到能不能解密成功和解密出来的数据是否正确

  3. 案例

    <script>
        //首先加密肯定是要有密钥的,自然解密也需要密钥
        let qwe = "4001234512par1q2";
        let asd = "6u7i8q1w2e3r4t5y";
    
        let str = "lnUsqFPjscXlHxe2";
        //转成字节数组 十六位十六进制数作为密钥
        let key = CryptoJS.enc.Utf8.parse(qwe)
        //十六位十六进制数作为密钥偏移量
        let iv = CryptoJS.enc.Utf8.parse(asd)
        //我的项目中这里需要解密的字符串不需先Base64解码了,而java需要先解码,这里也摸索了好久
        let decrypt = CryptoJS.AES.decrypt(str,key,{
            iv:iv,
            mode:CryptoJS.mode.CBC,
            padding:CryptoJS.pad.ZeroPadding//后两个参数一定要正确
        });
        let decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
        console.log(JSON.parse(decryptedStr))
    </script>
    

Postman中使用Crypto.js解密接口数据

Postman已经集成了Crypto,所以可以直接使用。再Tests里对响应写js脚本即可

在这里插入图片描述

参考文章
  1. Java使用Cipher类实现加密的过程详解
  2. JAVA AES加密与解密
  3. 前端js使用crypto-js进行aes解密,解密内容为空
  4. postman脚本执行顺序
  5. Postman JavaScript reference
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章           查看所有文章
加:2022-07-20 19:07:01  更:2022-07-20 19:09:41 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 19:57:31-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计