package com.wustrive;import java.util.TreeMap;import com.wustrive.aesrsa.util.*;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;/*** Description: AES+RSA签名,加密 验签,解密** @author: wubaoguo* @email: wustrive2008@gmail.com* @date: 2015/8/13 15:12*/
public class Main {public static final String clientPrivateKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAKbNojYr8KlqKD/y" +"COd7QXu3e4TsrHd4sz3XgDYWEZZgYqIjVDcpcnlztwomgjMj9xSxdpyCc85GOGa0" +"lva1fNZpG6KXYS1xuFa9G7FRbaACoCL31TRv8t4TNkfQhQ7e2S7ZktqyUePWYLlz" +"u8hx5jXdriErRIx1jWK1q1NeEd3NAgMBAAECgYAws7Ob+4JeBLfRy9pbs/ovpCf1" +"bKEClQRIlyZBJHpoHKZPzt7k6D4bRfT4irvTMLoQmawXEGO9o3UOT8YQLHdRLitW" +"1CYKLy8k8ycyNpB/1L2vP+kHDzmM6Pr0IvkFgnbIFQmXeS5NBV+xOdlAYzuPFkCy" +"fUSOKdmt3F/Pbf9EhQJBANrF5Uaxmk7qGXfRV7tCT+f27eAWtYi2h/gJenLrmtke" +"Hg7SkgDiYHErJDns85va4cnhaAzAI1eSIHVaXh3JGXcCQQDDL9ns78LNDr/QuHN9" +"pmeDdlQfikeDKzW8dMcUIqGVX4WQJMptviZuf3cMvgm9+hDTVLvSePdTlA9YSCF4" +"VNPbAkEAvbe54XlpCKBIX7iiLRkPdGiV1qu614j7FqUZlAkvKrPMeywuQygNXHZ+" +"HuGWTIUfItQfSFdjDrEBBuPMFGZtdwJAV5N3xyyIjfMJM4AfKYhpN333HrOvhHX1" +"xVnsHOew8lGKnvMy9Gx11+xPISN/QYMa24dQQo5OAm0TOXwbsF73MwJAHzqaKZPs" +"EN08JunWDOKs3ZS+92maJIm1YGdYf5ipB8/Bm3wElnJsCiAeRqYKmPpAMlCZ5x+Z" +"AsuC1sjcp2r7xw==";public static final String clientPublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCmzaI2K/Cpaig/8gjne0F7t3uE" +"7Kx3eLM914A2FhGWYGKiI1Q3KXJ5c7cKJoIzI/cUsXacgnPORjhmtJb2tXzWaRui" +"l2EtcbhWvRuxUW2gAqAi99U0b/LeEzZH0IUO3tku2ZLaslHj1mC5c7vIceY13a4h" +"K0SMdY1itatTXhHdzQIDAQAB";public static final String serverPrivateKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBALIZ98KqgLW8IMt4" +"G+N+4d3DiOiEa+5s6lCMSGE/NbU9stJEqw0EuCP54MY6JkT0HCYTCrLXqww6rSQy" +"WF7BNCVGssk2XDcvSKiCz1ZMgabd6XVK5kvIycySydXQ0Ky6rnfxw8w2mllHABFv" +"s1eamaHQozv18n/XGqemjW2BFy/jAgMBAAECgYAxT3FCi3SBXKnzy7hk/z9H6Bhi" +"0C8V3z/stzpe+mJDYOa+wtZdD15wT4HFQFpSIwgcHo+Kvp2UEDbZ27qN2Y43AZbF" +"9LOalWTRUzYtr8wL8MIbgtew/QQ9YFNWdkTZ6MxCItjD/mSz3Lrkcphvbsx4VoCV" +"YIJ04r+Loi0t9g0guQJBANvkpfrq0bLVRYWfaigjkx47mr0trJkB7mjADe69Iqts" +"M/2x5dHPpClDK78yzAWxU2BrYzOd31QIOm32iMIvRxUCQQDPWJPMOzcq8Jqs1PAM" +"7D0hxnvF3tSJB0CJCQWdGFkJiuIYSbrWnCVF78jJyU2AK1H3RDi9BzGPL2Z3i2Si" +"+9kXAkAPnKtAJl3fEY9PDmNuGCCA3AB/f/eqIV345/HVSm5kt1j1oSTNAa4JE/DO" +"MWAU42MlDFrNtl69y5vCZOeOyeaFAkBOJieGmWcAozDZJWTYqg2cdk/eU08t2nLj" +"c2gPPscIRrVSzC9EhhOyWV8HVv0D6s/471inPlfajNYFBp/Goj+/AkEAiejHX/58" +"Vv8+ccW22RMZmyxiHcZpTw9hz7vHUCWv03+fyVGtGMhJ4xuPt8UaZm91yHSPWWar" +"M8Xa7errKaXN9A==";public static final String serverPublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCyGffCqoC1vCDLeBvjfuHdw4jo" +"hGvubOpQjEhhPzW1PbLSRKsNBLgj+eDGOiZE9BwmEwqy16sMOq0kMlhewTQlRrLJ" +"Nlw3L0iogs9WTIGm3el1SuZLyMnMksnV0NCsuq538cPMNppZRwARb7NXmpmh0KM7" +"9fJ/1xqnpo1tgRcv4wIDAQAB";public static void main(String[] args) throws Exception {TreeMap<String, Object> params = new TreeMap<String, Object>();params.put("userid", "152255855");params.put("phone", "18965621420");client(params);server();}public static void client(TreeMap<String, Object> params) throws Exception {// 生成RSA签名String sign = EncryUtil.handleRSA(params, clientPrivateKey);params.put("sign", sign);String info = JSON.toJSONString(params);//随机生成AES密钥String aesKey = SecureRandomUtil.getRandom(16);//AES加密数据String data = AES.encryptToBase64(ConvertUtils.stringToHexString(info), aesKey);// 使用RSA算法将商户自己随机生成的AESkey加密String encryptkey = RSA.encrypt(aesKey, serverPublicKey);Req.data = data;Req.encryptkey = encryptkey;System.out.println("加密后的请求数据:\n" + new Req().toString());}public static void server() throws Exception {// 验签boolean passSign = EncryUtil.checkDecryptAndSign(Req.data,Req.encryptkey, clientPublicKey, serverPrivateKey);if (passSign) {// 验签通过String aeskey = RSA.decrypt(Req.encryptkey,serverPrivateKey);String data = ConvertUtils.hexStringToString(AES.decryptFromBase64(Req.data,aeskey));JSONObject jsonObj = JSONObject.parseObject(data);String userid = jsonObj.getString("userid");String phone = jsonObj.getString("phone");System.out.println("解密后的明文:userid:" + userid + " phone:" + phone);} else {System.out.println("验签失败");}}static class Req {public static String data;public static String encryptkey;@Overridepublic String toString() {return "data:" + data + "\nencryptkey:" + encryptkey;}}
}

源代码:
https://download.csdn.net/download/guoruijun_2012_4/12706666
或者
https://github.com/wustrive2008/aes-rsa-java

rsa与aes混合加密java实现相关推荐

  1. 基于RSA和AES混合加密实现的加解密小工具

    基于RSA和AES混合加密实现的加解密小工具 闲来无事,用python的tkinter开发了一个基于RSA和AES混合加密的小小工具.总结一下使用到的知识点. 首先是核心的加解密部分. 采用混合加密的 ...

  2. php rsa aes混合加密,手动演示RSA和AES混合加密过程

    RSA属于非对称加密算法,它虽然解决了"在不安全的信道上安全地传递密钥"这一问题,但缺点在于运算量太大,造成加/解速度太慢,所以在具体的工程应用上是混合使用了对称和和非对称加密算法 ...

  3. python实现rsa数据加密_python实现RSA与AES混合加密

    RSA加密 这是一种非对称加密算法,密钥分为公钥和私钥.通常私钥长度有512bit,1024bit,2048bit,4096bit,长度越长,越安全,但是生成密钥越慢,加解密也越耗时.一般公钥用来加密 ...

  4. 学习加密(四)spring boot 使用RSA+AES混合加密,前后端传递参数加解密

    学习加密(四)spring boot 使用RSA+AES混合加密,前后端传递参数加解密 技术标签: RSA  AES  RSA AES  混合加密  整合 前言:    为了提高安全性采用了RSA,但 ...

  5. RSA+AES混合加密实例

    文章目录 前言 一.AES+RSA混合加密是什么? 二.使用步骤 1.引入库 2.RAS+AES加密工具类 总结 Learning Process: 希望可以给你带来帮助!!! 前言 在服务器与终端设 ...

  6. 前后端通信安全RSA+AES混合加密

    前言 前后端安全通信一直是头疼的问题,如何保证前后端安全通信? 读完这篇文章教你学会前后端安全通信. 什么是前后端通信? 客户端向服务端获取资源(如:html/css/js/jpg/json/api接 ...

  7. RSA(非对称)+AES(对称加密)前后台交互

    前言:    为了提高安全性采用了RSA,但是为了解决RSA加解密性能问题,所以采用了RSA(非对称)+AES(对称加密)方式,如果只考虑其中一种的,可以去看我前面两篇文章,专门单独写的demo,可以 ...

  8. 对称非对称算法混合加密实战(DES和AES混合加密)

    最近需要用加密算法,开始研究加密算法,果然大学落下的需要全都补回来.泪奔啊! 网上找各种资料,看别人的原理解释看了了很多,使用非对称算法和对称算法混合加密在实际项目中是经常用的,但原理听的差不多,没有 ...

  9. 学习加密(四)spring boot 使用RSA+AES混合加密,前后端传递参数加解密(方式一)

    参考地址:https://blog.csdn.net/baidu_38990811/article/details/83540404

最新文章

  1. Go语言学习之旅01--变量与数据
  2. 关于WordPress中字体加载慢的问题解决方案(转)
  3. host mysql server_解决服务器连接错误Host ‘XXX’ is not allowed to connect to this MySQL server...
  4. python3.7操作kafka_python3.7新增关键字:async、await;带来和kafka-python==1.4.2的兼容性问题...
  5. 普通程序员,如何转型大数据相关方向?
  6. python自动化测试脚本怎么编写_【Python + uiautomator2】之编写unittest自动化测试脚本...
  7. 微型计算机系统的主存储器,微型计算机系统中 ,操作系统保存在硬盘上,其主存储器应该采用 ( )...
  8. Struts与MVC分层理解
  9. 个图标当十个用—多功能系统级图标制作攻略
  10. MySQL(14)-----运算符和优先级
  11. 通过C++实现Android Native Service
  12. 树莓派配置文档config.txt说明
  13. 挠场的科学丨四、穿梭阴阳的挠场——道家风水、八卦、布阵的解密
  14. k8s基本概念及使用
  15. vs2015 C# 控制台简单SpringDEMO
  16. ubuntu登录桌面后只显示壁纸,排查方案
  17. 分享 | 基于图像分类网络ResNet50_vd实现桃子分类
  18. C++ ERROR:error: passing 'XXX' as 'this' argument of 'XXX' discards qualifiers
  19. 放置街灯(UVA 10859)
  20. Windows 7 安装VS2008 SP1 失败 1

热门文章

  1. 小程序毕设作品之微信预约订座小程序毕业设计(4)开题报告
  2. 海拉细胞或已进化成新“物种”,癌症研究现危机
  3. 计算器免费下载_免费的在线计算器
  4. java list sublist_Java List的SubList使用问题
  5. loadedapk.java_求助【xposed框架吧】_百度贴吧
  6. android 无障碍的菜单,讯飞输入法Android V9.1.9652 菜单及表情适配无障碍模式
  7. 逆风而行!从考研失败到收获到自己满意的后端开发Offer,分享一下自己的经历!
  8. java中百分比计算
  9. 视频解码硬解和软解的区别及如何选择
  10. 2021年会议平板购买与使用常见问题大全(重点30条)