数据+密钥+加密密码-用java,jdk进行相应算法的加密解密实现
1,randomkey 加密/解密密码 随机定义,加密传给解密时用
2,RSA 私钥(解密)/公钥(加密) 事先给好
3,sign生成逻辑一样
私钥用来解密key,key用来解密数据
加密:
加密公钥+加密密码
key 随机数
publicKey 密钥
encryptkey = RSAUtils.encrypt(key, publicKey); 先对随机数加密(加密或解密密码)(公钥用来加密key)
aesContent= AESUtils.encrypt(contentStr,key); 再用随机数对内容加密,两次加密用不同的方法 相当于密码和内容都加密传输 key用来加密数据
解密:
解密私钥+加密密码
encryptKey 加密时的随机数
houbankPrivateKey 解密私钥
String deContent = AESUtils.decrypt(encryptContent, RSAUtils.decrypt(encryptKey, houbankPrivateKey)); 私钥用来解密key,key用来解密数据
数据+密钥用java,jdk进行相应算法的加密解密实现
示例:
==========加密
@Test public void withholdresult() { String aa="{\"type\":4,\"params\":{\"orderNo\": \"A000000001\", \"totalAmount\": 100000,\"withholdStatus\": 3, \"statusDesc\": \"代扣成功\", \"withholdDealTime\": 13410294851}}"; JSONObject body = JSONObject.parseObject(aa); body.get("type"); JSONObject bb =(JSONObject)body.get("params"); bb.get("orderNo"); Map<String, Object> content = Maps.newHashMap(); content.put("reqNo", "N2018072417502134562855"); content.put("name", "张三"); content.put("idNo", "410628201106126666"); content.put("cardNo", "6218853020010251"); content.put("phone", "15229069293"); content.put("status", "1"); String contentStr = aa;//JSON.toJSONString(content); // String aesKey = "e5dT7Y811x905884"; // String aesContent = AESAndMD5Util.encrypt(contentStr, aesKey); String aesContent=""; // String key = "bankApi"; String key = "3848907749222967"; String encryptkey = ""; try{ encryptkey = RSAUtils.encrypt(key, publicKey); aesContent= AESUtils.encrypt(contentStr,key); }catch (Exception e){ } Map<String, Object> params = Maps.newHashMap(); params.put("source", "HB20180515182115"); // 商户号 params.put("version", "1.0");// 协议版本 params.put("method", "borrow.account.withdrawals.notice");// 方法名 params.put("timestamp", "2018-06-05 17:40:52");// 时间戳 params.put("content", aesContent); params.put("key", encryptkey); String md5Key = "5635i0vBjcR707L28p7283ANzcJ951ew099Xz2uf012N"; String sign = AESAndMD5Util.md5(params, md5Key); params.put("sign", sign); String url = "http://192.168.18.51:8010/bank-api/openapi/notify";//"http://192.168.18.51:8010/bank-api/openapi/notify";//"http://localhost:8081/bank-api/openapi/notify";////"//"http://192.168.18.51:8010/bank-api/openapi/notifywithholdresult"; String result = HttpClientUtil.httpJsonPost(url, JSON.toJSONString(params)); System.out.println(result); }
======================解密
private JSONObject notifywithholdresult(@RequestBody JSONObject response) throws Exception { JSONObject jsonObject = new JSONObject(); try { LOGGER.info("随手记代扣结果回调参数加密前:{}", response); String encryptContent = response.getString("content");// 这个哪里来???? String encryptKey = response.getString("key"); if (StringUtils.isNotBlank(encryptContent) && StringUtils.isNotBlank(encryptKey)) { String deContent = AESUtils.decrypt(encryptContent, RSAUtils.decrypt(encryptKey, houbankPrivateKey)); JSONObject body = JSONObject.parseObject(deContent); boolean status=false; Integer type= Integer.valueOf(body.get("type")+""); if(type==4){ status = suisjAccountService.notifywithholdresult(deContent); LOGGER.info("随手记代扣结果回调参数加密后:{}", deContent); } if (status) { jsonObject.put("returnCode", CodeEnum.CODE_000000.getCode()); jsonObject.put("detailMessage", CodeEnum.CODE_000000.getMsg()); } else { jsonObject.put("returnCode", CodeEnum.CODE_0001.getCode()); jsonObject.put("detailMessage", CodeEnum.CODE_0001.getMsg()); } } } catch (Exception e) { LOGGER.error("随手记代扣结果回调异常", e); jsonObject.put("result", false); } return jsonObject; }
加密,加签过程:
相关推荐
针对被易赛通数据泄露防护客户端加密的文件的解密思路 本文主要讨论了如何对被易赛通数据泄露防护客户端加密的文件进行解密的思路。由于工作中需要处理敏感数据,公司要求电脑上必须安装易赛通数据泄露防护客户端,...
"EV4加密解密提取工具"是一个专门针对EV4格式加密文件设计的软件,它可以帮助用户对这种特殊格式的加密文件进行解密和内容提取。在本文中,我们将深入探讨EV4加密的原理、解密工具的工作方式以及如何使用提供的资源...
加密解密工具是计算机安全领域中的重要组成部分,主要用于保护数据的安全性和隐私性。...而对于开发者,深入研究加密解密的源码,有助于提升技术水平,也可以为创建更安全、更高效的加密解决方案提供思路。
前端JavaScript实现的加密解密代码,通常会利用Web Crypto API或者自定义的加密库来完成。在JavaScript中,由于浏览器环境的限制,可能需要通过Web Worker或Service Worker来处理大量计算任务,以避免阻塞用户界面。...
Java实现加密解密主要涉及到的是信息安全领域中的数据保护技术。DES(Data Encryption Standard)是一种经典的对称加密算法,用于保护数据的隐私性和安全性。在Java中,我们可以使用Java Cryptography Extension ...
综上所述,文章不仅介绍了文件加密解密的基本概念和常见算法,还提供了具体的编程实现思路,为读者理解并实际操作文件的加密解密提供了宝贵的指导。无论是对学术研究还是实际应用,文件加密解密都是保障信息安全不可...
### 手机解密方法详解 #### 概述 本文档汇总了部分手机型号的解密技巧,旨在帮助用户在遇到手机锁定问题时能够自助解决。文中提到了使用`Ctrl + F`快捷键来快速定位特定手机型号的方法,并列举了一些常见品牌的手机...
### AES加密解密算法的Java实现 #### 一、引言 高级加密标准(Advanced Encryption Standard,简称AES)是一种对称加密算法,被广泛应用于数据安全领域。它是由比利时密码学家Joan Daemen和Vincent Rijmen设计,并...
### 武汉理工大学危机原理课设加密解密程序设计知识点解析 #### 一、课程设计背景及意义 在当前信息化社会背景下,信息安全成为了一个至关重要的问题。随着互联网技术的飞速发展,数据加密技术作为保障信息安全的...
7. 实验报告撰写:实验报告应该包含算法描述、程序设计思路、程序流程图、代码实现、加密解密示例以及可能的改进方案等部分,帮助读者理解整个项目。 8. VC++环境:虽然C语言是跨平台的,但VC++(Visual C++)是...
本文将深入探讨加密和解密的基本概念,以及给出一个简单的Java实现示例,帮助理解加密解密的原理。 首先,加密是将明文(可读数据)转化为密文(不可读数据)的过程,以防止未经授权的访问。解密则是将密文还原为...
IBM Lucifer 加密解密算法是20世纪80年代由IBM公司开发的一种早期的块密码算法,它在设计上受到了DES(Data Encryption Standard)的影响,但又试图克服DES的一些局限性,比如较短的密钥长度。Lucifer算法在密码学...
### 加密解密置换算法的实现 #### 一、引言 在信息技术高速发展的今天,信息安全已成为各行各业关注的焦点。加密技术作为保障信息安全的关键手段之一,其重要性不言而喻。加密解密置换算法是一种典型的对称加密...
由于数据库连接池的用户密码需要加密,并且在安装包中存在有连接数据库,因此需要sping重写、用户密码在java和c#加密解密等 ...sping配置重写思路_用户密码加密解密(JAVA和C#加密解密同步)sping2.0以上
加密解密程序设计是计算机科学领域的一个重要主题,特别是在信息安全和数据保护方面。在这个课程设计中,学生被要求使用8086汇编语言来实现一个加密和解密程序,这对理解和掌握低级别编程语言以及密码学原理至关重要...
自定义对称加密解密算法,正如标题所提及,是指设计和实现一种特定的加密机制,以提高加密速度并增强安全性,使其难以被破解。 对称加密的历史可以追溯到古罗马时期,但现代对称加密算法的设计更为复杂且高效。常见...
《易语言动态加密解密项目源码解析》 在信息技术高速发展的今天,数据安全成为了一个不容忽视的问题。本文将深入探讨一个基于易语言的动态加密解密项目,旨在帮助个人学习者、学生以及小团队开发者了解和掌握动态...
在本文中,我们将深入探讨如何使用Python的PyQt5库结合Python 3.6来创建一个用户界面(UI)驱动的加密解密程序。这个小程序涵盖了四种经典的密码学加密算法:凯撒加密、维吉尼亚加密、仿射加密以及培根加密。我们将...
《微机原理加密解密程序设计》是一门深入探索计算机底层运作原理的实践课程,旨在通过设计和实现加密解密程序,让学生掌握8086汇编语言编程技巧,理解数据处理过程,以及如何利用微处理器进行数据安全操作。...