`
y806839048
  • 浏览: 1107550 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

加密解密思路

阅读更多

 

数据+密钥+加密密码-用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;
}

 

 

加密,加签过程:

 



 

  • 大小: 125.9 KB
分享到:
评论

相关推荐

    针对被易赛通数据泄露防护客户端加密的文件的解密思路

    针对被易赛通数据泄露防护客户端加密的文件的解密思路 本文主要讨论了如何对被易赛通数据泄露防护客户端加密的文件进行解密的思路。由于工作中需要处理敏感数据,公司要求电脑上必须安装易赛通数据泄露防护客户端,...

    EV4加密解密提取工具

    "EV4加密解密提取工具"是一个专门针对EV4格式加密文件设计的软件,它可以帮助用户对这种特殊格式的加密文件进行解密和内容提取。在本文中,我们将深入探讨EV4加密的原理、解密工具的工作方式以及如何使用提供的资源...

    加密解密的工具、加密解密工具

    加密解密工具是计算机安全领域中的重要组成部分,主要用于保护数据的安全性和隐私性。...而对于开发者,深入研究加密解密的源码,有助于提升技术水平,也可以为创建更安全、更高效的加密解决方案提供思路。

    文件移位加密与解密

    从给定的文件信息来看,本文档主要涉及的是文件移位加密与解密技术的C语言实现,这是一项基础但非常实用的加密方法,尤其在早期计算机科学领域中占有重要地位。下面,我们将深入探讨这一主题,包括其背景、原理、...

    国密SM4算法前后端加密解密完整代码.zip

    前端JavaScript实现的加密解密代码,通常会利用Web Crypto API或者自定义的加密库来完成。在JavaScript中,由于浏览器环境的限制,可能需要通过Web Worker或Service Worker来处理大量计算任务,以避免阻塞用户界面。...

    手机解密方法

    ### 手机解密方法详解 #### 概述 本文档汇总了部分手机型号的解密技巧,旨在帮助用户在遇到手机锁定问题时能够自助解决。文中提到了使用`Ctrl + F`快捷键来快速定位特定手机型号的方法,并列举了一些常见品牌的手机...

    AES加密解密算法的Java实现.doc

    ### AES加密解密算法的Java实现 #### 一、引言 高级加密标准(Advanced Encryption Standard,简称AES)是一种对称加密算法,被广泛应用于数据安全领域。它是由比利时密码学家Joan Daemen和Vincent Rijmen设计,并...

    凯撒密码加密解密(含实验报告+c语言完美版)

    7. 实验报告撰写:实验报告应该包含算法描述、程序设计思路、程序流程图、代码实现、加密解密示例以及可能的改进方案等部分,帮助读者理解整个项目。 8. VC++环境:虽然C语言是跨平台的,但VC++(Visual C++)是...

    武汉理工大学危机原理课设加密解密程序设计

    ### 武汉理工大学危机原理课设加密解密程序设计知识点解析 #### 一、课程设计背景及意义 在当前信息化社会背景下,信息安全成为了一个至关重要的问题。随着互联网技术的飞速发展,数据加密技术作为保障信息安全的...

    加密和解密编程思路Java实现了这一过程

    本文将深入探讨加密和解密的基本概念,以及给出一个简单的Java实现示例,帮助理解加密解密的原理。 首先,加密是将明文(可读数据)转化为密文(不可读数据)的过程,以防止未经授权的访问。解密则是将密文还原为...

    IBM lucifer加密解密算法包

    IBM Lucifer 加密解密算法是20世纪80年代由IBM公司开发的一种早期的块密码算法,它在设计上受到了DES(Data Encryption Standard)的影响,但又试图克服DES的一些局限性,比如较短的密钥长度。Lucifer算法在密码学...

    加密解密置换算法的实现

    ### 加密解密置换算法的实现 #### 一、引言 在信息技术高速发展的今天,信息安全已成为各行各业关注的焦点。加密技术作为保障信息安全的关键手段之一,其重要性不言而喻。加密解密置换算法是一种典型的对称加密...

    sping配置重写思路_用户密码加密解密(JAVA和C#加密解密同步)

    由于数据库连接池的用户密码需要加密,并且在安装包中存在有连接数据库,因此需要sping重写、用户密码在java和c#加密解密等 ...sping配置重写思路_用户密码加密解密(JAVA和C#加密解密同步)sping2.0以上

    加密解密程序设计加密解密程序设计.doc

    加密解密程序设计是计算机科学领域的一个重要主题,特别是在信息安全和数据保护方面。在这个课程设计中,学生被要求使用8086汇编语言来实现一个加密和解密程序,这对理解和掌握低级别编程语言以及密码学原理至关重要...

    自定义对称加密解密算法

    自定义对称加密解密算法,正如标题所提及,是指设计和实现一种特定的加密机制,以提高加密速度并增强安全性,使其难以被破解。 对称加密的历史可以追溯到古罗马时期,但现代对称加密算法的设计更为复杂且高效。常见...

    动态加密解密.zip易语言项目例子源码下载

    《易语言动态加密解密项目源码解析》 在信息技术高速发展的今天,数据安全成为了一个不容忽视的问题。本文将深入探讨一个基于易语言的动态加密解密项目,旨在帮助个人学习者、学生以及小团队开发者了解和掌握动态...

    PYQT5+python3.6+QT编写一个带ui的加密解密小程序

    在本文中,我们将深入探讨如何使用Python的PyQt5库结合Python 3.6来创建一个用户界面(UI)驱动的加密解密程序。这个小程序涵盖了四种经典的密码学加密算法:凯撒加密、维吉尼亚加密、仿射加密以及培根加密。我们将...

Global site tag (gtag.js) - Google Analytics