前端代码 :
      $.ajax({
   type:"GET",
url:"http://localhost:8084/getPulbicKey",
dataType:"json",
success:function(data){
console.log(data);
var encrypt = new JSEncrypt();
encrypt.setPublicKey(data);
var encryptData = encrypt.encrypt("abc");//加密后的字符串 JSON加密
console.log(encryptData)
$.ajax({
   type:"GET",
url:"http://localhost:8084/decrypt",
dataType:"json",
data:{"encrypt":encryptData},
success:function(data){
console.log(data);
},
error:function(data){
console.log("error:"+data);
}
});
},
error:function(data){
console.log("error:"+data);
}
});

后台代码:

package com.tran.demo.controller;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties; import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.util.ResourceUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import com.tran.demo.utils.SecurityUtil;
import com.tran.demo.utils.RetResponse;
import com.tran.demo.utils.RetResult; import cn.hutool.crypto.asymmetric.RSA; @Controller
public class WebController { private final static Logger log = LoggerFactory.getLogger(WebController.class);
private final static String publicKey = "PUBLIC_KEY";
private final static String privateKey = "PRIVATE_KEY"; @RequestMapping("/index")
public String index() {
return "index";
} @RequestMapping("/decrypt")
@ResponseBody
public RetResult decrypt(byte [] encrypt) throws Exception {
File file = ResourceUtils.getFile("classpath:keys/secret_key.txt");
Properties pro = new Properties();//创建集合
   pro.load(new FileInputStream(file)); System.out.println("PUBLIC_KEY"+pro.get("PRIVATE_KEY"));
System.out.println("PRIVATE_KEY"+pro.get("PUBLIC_KEY")); String decryptRSADefault = SecurityUtil.decryptRSADefault(pro.get("PRIVATE_KEY").toString(), new String(encrypt,"UTF-8"));
System.out.println("解密:"+decryptRSADefault);
return RetResponse.makeOKRsp();
} @ResponseBody
@RequestMapping("/getPulbicKey")
public String getPublicKey() throws IOException {
RSA rsa = new RSA();
//Resource resource = new ClassPathResource("keys/secret_key.txt");
   File file = ResourceUtils.getFile("classpath:keys/secret_key.txt");
Properties pro = new Properties();//创建集合
   FileOutputStream out = null ;
try { if(!file.exists()) {
file.createNewFile();
} pro.setProperty(privateKey, rsa.getPrivateKeyBase64());
pro.setProperty(publicKey, rsa.getPublicKeyBase64());
out = new FileOutputStream(file);
pro.store(out,"密钥");
out.flush(); } catch (Exception e) {
log.error("流异常:::{}", e );
} finally {
pro.clear();
if(out != null ) {
try {
out.close();
} catch (IOException e) {
log.error("流异常",e);
}
}
}
return rsa.getPublicKeyBase64() ;
} }

git:https://gitee.com/xxoo0_297/js_rsa_java.git

前端 js加密 后台java 解密 RSA的更多相关文章

  1. js前端3des加密 后台java解密

    import java.security.Key; import java.security.SecureRandom; import javax.crypto.Cipher; import java ...

  2. 前端js,后台python实现RSA非对称加密

    先熟悉使用 在后台使用RSA实现秘钥生产,加密,解密; # -*- encoding:utf-8 -*- import base64 from Crypto import Random from Cr ...

  3. RSA AES 前端JS与后台JAVA的加密解密的是实现

    AES CryptoJS 前提是编码方式,key,vi中设置一样,就可以进行跨语言加密解密 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ...

  4. RSA前台js加密,后台C#解密

    一.需求: 为了安全,项目中前台登陆用的密码需要加密传到后台,后台c#解密登陆密码. 二.解决方案 采用非对称加密算法RSA来达到目的,前台登陆页面一加载便发送一次ajax请求获取后台产生的公钥,用于 ...

  5. RSA加密前端JS加密,后端asp.net解密,报异常

    RSA加密前端JS加密,后端asp.net解密,报异常 参考引用:http://www.ohdave.com/rsa/的JS加密库 前端JS加密代码: function GetChangeStr() ...

  6. js加密后台加密解密以及验证码

    该文档为转载内容: 加密解密 1 前端js加密概述 2 前后端加密解密 21 引用的js加密库 22 js加密解密 23 Java端加密解密PKCS5Padding与js的Pkcs7一致 验证码 1 ...

  7. AES加密解密——AES在JavaWeb项目中前台JS加密,后台Java解密的使用

    一:前言 在软件开发中,经常要对数据进行传输,数据在传输的过程中可能被拦截,被监听,所以在传输数据的时候使用数据的原始内容进行传输的话,安全隐患是非常大的.因此就要对需要传输的数据进行在客户端进行加密 ...

  8. node-rsa加密,java解密调试

    用NODE RSA JS 加密解密正常,用JAVA RSAUtils工具类加密解密正常.但是用node加密玩的java解密不了.原因:node默认的是 DEFAULT_ENCRYPTION_SCHEM ...

  9. post 传递参数中包含 html 代码解决办法,js加密,.net解密

    今天遇到一个问题,就是用post方式传递参数,程序在vs中完美调试,但是在iis中,就无法运行了,显示传递的参数获取不到,报错了,查看浏览器请求情况,错误500,服务器内部错误,当时第一想法是接收方式 ...

随机推荐

  1. 卷积神经网络 CNN

    卷积神经网络与普通的神经网络十分相似:他们都由神经元构成,这些神经元拥有可学习的权重和偏差.每一个神经元接收一些输入,执行点积运算并以非线性可选择地跟随它.整个网络仍然表征一个单个可微分的分数函数:从 ...

  2. rviz初接触2.0

    用rviz之前需要安装arbotix 在catkin_ws/src中 git clone https://github.com/vanadiumlabs/arbotix_ros.git 回到catki ...

  3. 如何处理Excel空行问题

    在操作excel的时候, 可能会出现很多的无效数据行. 下面是一个我的简单处理方式 public static bool DataSetToExcel(DataSet dataSet, string ...

  4. 序列化、time、random、hashlib、sys模块

    •很多常用和内置模块,我们只需要掌握他们的用法而暂时不用考虑内部是如何实现的,这些模块大大提升了开发效率 ! 1.json模块与pickle模块 •json 如果你有这样的困扰,当希望把一种数据存到硬 ...

  5. cdcq的独立博客

    cdcq的独立博客终于又复活啦,以后就用这个了 地址: http://cdcq.coding.me 现在用的是luogu的博客:https://cdcq.blog.luogu.org/

  6. 两个队列实现栈&两个栈实现队列(JAVA)

    1,两个栈实现队列 题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 思路:栈的特点时先进后出,队列的特点是先进先出. 若此时有两个队列stack1,st ...

  7. EBS查询在线用户

    转自:https://www.cnblogs.com/benio/archive/2011/03/10/1979417.html SELECT u.user_name, app.application ...

  8. 【缓存算法】FIFO,LFU,LRU

    一.FIFO算法 FIFO(First in First out),先进先出.其实在操作系统的设计理念中很多地方都利用到了先进先出的思想,比如作业调度(先来先服务),为什么这个原则在很多地方都会用到呢 ...

  9. mac 版本navicate 如何安装破解版

    https://www.jianshu.com/p/f42785e55b6b  博客地址 部分童鞋安装后没有rpk文件,我也不知道怎么解决实在不行,请下载破解版链接:https://pan.baidu ...

  10. 20175202 《Java程序设计》第五周学习总结

    20175209 2018-2019-2 <Java程序设计>第五周学习总结 教材知识点总结 1.接口声明: 使用关键字interface来定义接口. 定义接口时使用关键字interfac ...