uniapp-Java使用AES加密解密

news/2024/11/17 10:04:00/文章来源:https://www.cnblogs.com/chenze-Index/p/18294834

操作前

uniapp 需要安装  npm install crypto-js

 在需要使用的界面加入 import CryptoJS from 'crypto-js'

 

java端

        <!-- spring security 安全认证 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency><!-- 添加 commons-net 依赖 --><dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.8.0</version> <!-- 请检查是否有更新的版本 --></dependency>

 

 

一、ECB 模式

uniapp端

    function decryptData(encryptedData) {const SECRET_KEY = CryptoJS.enc.Utf8.parse('mysecretkey12345');const decryptedBytes = CryptoJS.AES.decrypt(encryptedData, SECRET_KEY, {mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7});const decryptedData = decryptedBytes.toString(CryptoJS.enc.Utf8);return decryptedData;};function  encryptData(strData) {const SECRET_KEY = CryptoJS.enc.Utf8.parse('mysecretkey12345');// 加密const encryptedData = CryptoJS.AES.encrypt(strData, SECRET_KEY, {mode: CryptoJS.mode.ECB,padding: CryptoJS.pad.Pkcs7});return encryptedData;};

uniapp端调用

    function jiami(){const obj = {name: "Alice",age: 25,hobby: "Reading books"};var str=JSON.stringify(obj);var ss=this.encryptData(str);console.log("加密==>"+ss);};function jiemi(){var mv="QmEJivSxPT/qMEfflQ+E4f0MZUKrxnqtcSU6xEcE1EQfBhC+8RLHQoZh33jugqzzMRRLyh5/HiXvboBObVP5P9SCBy/w4iGs0OEKMtGU7lSEXZ3RvzZhG3IV/3l13Eiw4vXio/JlASg7HyNxH04IYv6EQvFzYTSsVgu91VnK1+jPzgrBv/EuGr1AqBR9CFKNY=";var ss =this.decryptData(mv);console.log("解密==>"+ss);};

 

JAVA端

import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import javax.crypto.Cipher;
import java.util.Base64;public class AsymmetricEncryption {public static KeyPair generateKeyPair() throws Exception {KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");keyPairGenerator.initialize(2048);return keyPairGenerator.generateKeyPair();}public static String encrypt(String text, PublicKey publicKey) throws Exception {Cipher cipher = Cipher.getInstance("RSA");cipher.init(Cipher.ENCRYPT_MODE, publicKey);byte[] encrypted = cipher.doFinal(text.getBytes());return Base64.getEncoder().encodeToString(encrypted);}
}

Java端调用

    public static void main(String[] args) throws Exception {//加密String key = "mysecretkey12345";String json="123456";String a= SymmetricEncryption.encrypt(json,key);System.out.println("a=>"+a);//解密String b =SymmetricEncryption.decrypt(a,key);System.out.println("b=>"+b);}

 

二、CBC模式

uniapp端

    function encryptByAES(data, key, iv) {return CryptoJS.AES.encrypt(data, CryptoJS.enc.Utf8.parse(key), {iv: CryptoJS.enc.Utf8.parse(iv),mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7}).toString();};function  decryptByAES(data, key, iv) {var decrypted = CryptoJS.AES.decrypt(data, CryptoJS.enc.Utf8.parse(key), {iv: CryptoJS.enc.Utf8.parse(iv),mode: CryptoJS.mode.CBC,padding: CryptoJS.pad.Pkcs7});return decrypted.toString(CryptoJS.enc.Utf8);};

uniapp端调用

   function jiami(){const obj = {name: "Alice",age: 25,hobby: "Reading books"};var str=JSON.stringify(obj);var key="1234567890123456";var iv="1234567890123456";var ss=this.encryptByAES(str,key,iv);console.log("加密==>"+ss);};function jiemi(){var key="1234567890123456";var iv="1234567890123456";var mv="QmEJWUGl9Qwy7P7rlY1YAybFyIbMC585Ow50Pb2wONHmvaTnLC4dz4pm0JNpdnVScKBA4TZYXio/JlASg7HyNxH04IYv6EQvFzYTSsVgu91VnK1+jPzgrBv/EuGr1AqBR9CFKNY=";var ss=this.decryptByAES(mv,key,iv);console.log("解密==>"+ss);};

Java端

import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;public class AESCBCExample {private static final String ALGORITHM = "AES/CBC/PKCS5Padding";private static final String SECRET_KEY = "1234567890123456"; // 16 bytes keyprivate static final String IV = "1234567890123456"; // 16 bytes IV sailpublic static String encrypt(String data) throws Exception {SecretKeySpec secretKeySpec = new SecretKeySpec(SECRET_KEY.getBytes(), "AES");IvParameterSpec ivParameterSpec = new IvParameterSpec(IV.getBytes());Cipher cipher = Cipher.getInstance(ALGORITHM);cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec, ivParameterSpec);byte[] encrypted = cipher.doFinal(data.getBytes());return Base64.getEncoder().encodeToString(encrypted);}public static String decrypt(String encryptedData) throws Exception {SecretKeySpec secretKeySpec = new SecretKeySpec(SECRET_KEY.getBytes(), "AES");IvParameterSpec ivParameterSpec = new IvParameterSpec(IV.getBytes());Cipher cipher = Cipher.getInstance(ALGORITHM);cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivParameterSpec);byte[] original = cipher.doFinal(Base64.getDecoder().decode(encryptedData));return new String(original);}
}

Java端调用

    public static void main(String[] args) throws Exception {//加密String json="123456";String a=AESCBCExample.encrypt(json);System.out.println("a=>"+a);//解密String b=AESCBCExample.decrypt(a);System.out.println("b=>"+b);}

其他

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python项目导入上级目录设置”的setting.json是不是哪里还有错误呀?

大家好,我是Python进阶者。 一、前言 前几天在Python白银交流群【王者级混子】问了一个Python代码处理的问题,问题如下:大佬们,我想问问我抄网上“vscode运行python项目导入上级目录设置”的setting.json是不是哪里还有错误呀?还是没法导入上级目录二、实现过程 这里后来很…

伙伴活动|AI硬件大潮来袭,深圳的创客们在哪里?

「每一种硬件产品,都会被 GenAI 重新做一遍。」分享一个社区伙伴「未来光锥」参与主办的活动。如果你同时对 AI 和硬件感兴趣,提到 maker 一词仍然会激动。推荐你参与这次活动。AI 玩具Folotoy 的创始人、RTE 开发者社区成员王乐也将参与本次活动并分享。也推荐你收听王乐参与…

Cilium Socket LB 特性

Cilium Socket LB 特性Cilium Socket LB 一、环境信息主机 IPubuntu 172.16.94.141软件 版本docker 26.1.4helm v3.15.0-rc.2kind 0.18.0kubernetes 1.23.4ubuntu os Ubuntu 20.04.6 LTSkernel 5.11.5 内核升级文档二、Cilium SocketLB 模式认知 负载均衡的实现方式通常有如下两…

高考后第一次Codeforces Round 952 (Div. 4)

A Creating Words 思路:拿一个容器交换两数值即可 #include<bits/stdc++.h> using namespace std; const int N = 100001; char a[N],b[N]; int main() {int n;scanf("%d",&n);while(n--){scanf("%s %s",a,b);char jiaohuan = a[0];a[0] = b[0]…

前端如何取消接口调用

🧑‍💻 写在开头 点赞 + 收藏 === 学会🤣🤣🤣 1. xmlHttpRequest是如何取消请求的?实例化的XMLHttpRequest对象上也有abort方法const xhr = new XMLHttpRequest(); xhr.addEventListener(load, function(e) {console.log(this.responseText); }); xhr.open(GET, htt…

篮球比赛电子计分牌

在学习单片机课设“篮球比赛电子计分牌”的时候遇到了很多问题。在网上搜索到的资源很杂很乱,很多内容都需要付费,在学习的过程遇到了不少的阻力,因此我打算把我所做的拿出来与大家共同讨论,不足的地方还请多多指教哈。学艺不精,成绩仅为良好,大家参考就行。另外能激发后…

学习SpringCloud环境搭配

今天准备学习一下springcloud,在网上找了一个最新的学习视频需要更新一下之前安装的软件版本。突然想起来我还有个博客园的账号,就想记录一下环境搭建。 主要是分为以下几个部分Java 17+ Maven 3.9+ Mysql 8.0+ cloud 2023.0.0 boot 3.2.0 cloud alibaba 2022.0.0.0 之前…

进度报告4

(1)代码案例练习 1.public class helloworld { public static void main(String[] args) { double Price;int month;String x; Price=price(1000,6,"头等舱") ; System.out.println("优惠价为:"+Price); } public static double price(double a,int b,St…

day2

SSRF漏洞 1.SSRF漏洞介绍 SSRF(Server-Side Request Forgery)服务端请求为伪造,SSRF是⼀种由攻击者构造形成由服务端发起请求的⼀个安全漏洞。 ⼀般情况下,SSRF攻击的⽬标是从外⽹⽆法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连⽽与外⽹隔离…

[二、状态管理]2管理组件拥有的状态(4)@Provide装饰器和@Consume装饰器:与后代组件双向同步

@Provide和@Consume,应用于与后代组件的双向数据同步,应用于状态数据在多个层级之间传递的场景。不同于上文提到的父子组件之间通过命名参数机制传递,@Provide和@Consume摆脱参数传递机制的束缚,实现跨层级传递。 其中@Provide装饰的变量是在祖先节点中,可以理解为被“提供…

dedecms搭建网站怎么更换编辑器

入口: 系统 > 系统设置 > 系统基本参数 > 核心设置 > 编辑器默认可选参数: wangEditor 、 ckeditor 、 fck本文来自博客园,作者:黄文Rex,转载请注明原文链接:https://www.cnblogs.com/hwrex/p/18294690

DedeCMS网站安装成功后点击登录网站后台报404错误怎么办?

DedeCMS 默认的管理后台路径为 /dede 。遇到这个问题,需先检查 /dede 目录是否被重命名了。如果被重命名了,改回 /dede 即可。或直接在浏览器地址栏手动输入相应的管理后台路径,就可以打开后台登录页面了。本文来自博客园,作者:黄文Rex,转载请注明原文链接:https://www.…