首页 > 编程语言 >uniapp-Java使用AES加密解密

uniapp-Java使用AES加密解密

时间:2024-07-10 19:34:11浏览次数:17  
标签:uniapp AES Java String Cipher key var import CryptoJS

操作前

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 key
    private static final String IV = "1234567890123456"; // 16 bytes IV sail

    public 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);

    }

其他

 

标签:uniapp,AES,Java,String,Cipher,key,var,import,CryptoJS
From: https://www.cnblogs.com/chenze-Index/p/18294834

相关文章

  • Python 爬虫与 Java 爬虫:相似之处、不同之处和选项
    在信息时代,网络上可用的数据量巨大且不断增长。为了从这些数据中提取有用的信息,爬虫已成为一种重要的技术。Python和Java都是流行的编程语言,都具有强大的爬虫功能。本文将深入探讨Python爬虫和Java爬虫之间的差异,以帮助您在选择适合您需求的语言时做出明智的决定。一......
  • Java的IO流
    1.简单介绍2.常用IO流:3.分类接下来所有的内容都是InputStream、OutputStream、Reader、Writer的子类。和File相关的IO流有四个分别是FileInputStream和FileOutputStream,FileReader和FileWriter。其中FileReader和FileWriter为字符IO流。FileInputStream和FileOutp......
  • JAVA高级之线程池
    线程的状态(6种)线程状态具体含义NEW一个尚未启动的线程的状态。也称之为初始状态、开始状态。线程刚被创建,但是并未启动。还没调用start方法。MyThreadt=newMyThread()只有线程象,没有线程特征。RUNNABLE当我们调用线程对象的start方法,那么此时线程对象进入了RUNNABLE状态。......
  • Java中类和对象概述
    目录前言:一.初步了解类和对象1.1什么是面向对象?1.2什么是类和对象?​二.类的定义与使用2.1类的格式与定义2.2对象的创建与使用 三.this关键字的使用3.1this的使用方法3.2this引用的特性 四.类的构造方法 五.静态变量和静态方法前言:小编也是第一次写blog,可能......
  • 每天两道Java面试题(一)
    1、this关键字和super关键字的区别及联系this关键字用在本类中。在类的内部,可以在任何方法中使用this引用当前对象。this关键字是用来解决全局变量和局部变量之间的冲突。this()可以调用同类中重载的构造方法,并且需要放在第一行。super关键字用在子类中。在子类中可以通......
  • 使用Java9 Flow API进行Reactive Programming
    importjava.util.concurrent.Flow;importjava.util.concurrent.Flow.Publisher;importjava.util.concurrent.Flow.Subscriber;publicclassReactiveExample{publicstaticvoidmain(String[]args){//创建一个发布者,发布一系列的数字Publisher......
  • Java Executors类的9种创建线程池的方法及应用场景分析
    在Java中,Executors类提供了多种静态工厂方法来创建不同类型的线程池。在学习线程池的过程中,一定避不开Executors类,掌握这个类的使用、原理、使用场景,对于实际项目开发时,运用自如,以下是一些常用的方法,来一一细说:newCachedThreadPool():创建一个可缓存的线程池,如果线程池中......
  • Java面向对象小游戏--文字版格斗游戏(附带全套源代码)->基于JavaBean
    一、前言java部分的基础学习已经完结,接下来给大家分享的大多为java相关的案例分析,也会有一些小项目,这点不要太过于担心,主要还是基础部分要打牢固。java部分的难点就在面向对象这一点,学习C语言的小伙伴们应该是第一次听说方法。这点也是和C语言相差巨大的地方,不过对于学习过pyt......
  • Java面向对象基础篇综合训练(附带全套源代码及逐语句分析)->基于javabeen
    一、前言还是那句话面向对象是Java的重点,同时也是难点,小编会在此部分分享一些综合型的案例,难度从易到难,本篇文章只是一些基础的操作,综合能力并不是太高。大家可以试着观看一遍自己去打开编译器尝试一下。不知道有多少读者是跟着小编进行学习的,今天是学习Java的第五天,希望大家......
  • JavaScript如何将字符串形式里的img图片添加属性
    方法一:使用正则表达式以下例子中将会在img图片中添加crossorigin属性lethtml=`<p>打撒抠脚大汉噶刷卡机很大凯撒</p><p>规范化是的冯绍峰东风浩荡试试</p><imgsrc="http://s3.v.360xkw.com/yzb/photos/1688536327316_ca0e2e3d.jpg"alt=""......