/*** 敏感信息解密*/@PostMapping(value= "/decryptor", produces =MediaType.APPLICATION_JSON_UTF8_VALUE)publicRestResponse decryptor(@RequestBody String encryptContent) {

RestResponse restResponse= newRestResponse();try{

Map openapiResult =JSON.parseObject(encryptContent,new TypeReference>() {

},

Feature.OrderedField);

String signType= StringUtils.defaultIfBlank(openapiResult.get("sign_type"), "RSA2");

String charset= StringUtils.defaultIfBlank(openapiResult.get("charset"), "UTF-8");

String encryptType= StringUtils.defaultIfBlank(openapiResult.get("encrypt_type"), "AES");

String sign= openapiResult.get("sign");

String content= openapiResult.get("response");

LOGGER.info(String.format("准备验签和解密,sign=[%s], signType=[%s], encryptType=[%s], encryptContent=[%s]", sign, signType, encryptType, encryptContent));//如果密文的

boolean isDataEncrypted = !content.startsWith("{");booleansignCheckPass;//2. 验签

String signContent =content;//支付宝应用公钥

String signVeriKey =ALIPAY_APPLET_PUBLIC_SECRET;//如果是加密的报文则需要在密文的前后添加双引号

if(isDataEncrypted) {

signContent= "\"" + signContent + "\"";

}try{

signCheckPass=AlipaySignature.rsaCheck(signContent, sign, signVeriKey, charset, signType);

}catch(AlipayApiException e) {//验签异常, 日志

LOGGER.error("验签异常,encryptContent=" +encryptContent, e);

restResponse.setRestStatus(RestStatus.FAIL_100021);returnrestResponse;

}if (!signCheckPass) {//验签不通过(异常或者报文被篡改),终止流程(不需要做解密)

LOGGER.error("验签失败,encryptContent=" +encryptContent);

restResponse.setRestStatus(RestStatus.FAIL_100021);returnrestResponse;

}//支付宝小程序AES秘钥

String encryptKey =ALIPAY_APPLET_AES_SECRET;//3. 解密

String plainData;if(isDataEncrypted) {try{

plainData=AlipayEncrypt.decryptContent(content, encryptType, encryptKey, charset);

}catch(AlipayApiException e) {//解密异常, 日志

LOGGER.error("解密异常,encryptContent=" +encryptContent, e);

restResponse.setRestStatus(RestStatus.FAIL_100021);returnrestResponse;

}

}else{

plainData=content;

}

restResponse.setData(plainData);

restResponse.setRestStatus(RestStatus.SUCCESS);

}catch(Exception e) {

LOGGER.error("验签解密异常,encryptContent=" +encryptContent, e);

restResponse.setRestStatus(RestStatus.FAIL_100021);

}returnrestResponse;

}

支付宝php 验签 解密,支付宝敏感信息解密 - osc_fcq4wwqo的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. php 原理 淘口令 解密_淘口令解析 - super19911115的个人空间 - OSCHINA - 中文开源技术交流社区...

    淘口令解析 通过程序解析淘口令,无需联盟开发者权限,只需几行代码就可实现自动识别淘口令: def query_password(sign_server, share_password): data = ...

  2. des vue 双倍长 解密_3DES双倍长加密 - osc_ojx9hm4t的个人空间 - OSCHINA - 中文开源技术交流社区...

    importjava.security.SecureRandom;importjavax.crypto.Cipher;importjavax.crypto.SecretKey;importjavax. ...

  3. php支付宝扫码登录接口,支付宝支付接口 - musam的个人空间 - OSCHINA - 中文开源技术交流社区...

    接入阿里支付宝其实不是很难,阿里提供了很全面的SDK供我们使用,我们只需调用API接口就可以完成支付功能,但是具体的业务还是需要我们自己编写,根据提供的文档记录一下简单的使用方式. 1.登录蚂蚁金服开 ...

  4. flutter 刷脸_支付宝刷脸认证 - osc_bkdv2it5的个人空间 - OSCHINA - 中文开源技术交流社区...

    去支付宝下载sdk  这里引用我就不多说了 Loader::import('ali.wappay.service.AlipayTradeService',EXTEND_PATH,'.php'); Lo ...

  5. 仿射解密c语言程序实验报告,仿射加密解密 - 依姆哣特的个人空间 - OSCHINA - 中文开源技术交流社区...

    //功能:仿射加密 密钥:[3][5][9][11][15][17][19][21][23]有逆元的数 例子:pku  c=7,d=3  输出 :EVN 编辑环境:vc++6.0 include in ...

  6. php扩展管理配置信息,PHP扩展管理 - 城市之雾的个人空间 - OSCHINA - 中文开源技术交流社区...

    一.php扩展管理 1.什么是php扩展 php扩展就是php核心并不支持的功能,然后可以通过扩展的方式进行扩展PHP的功能,常见的扩展如MySQL,gb2等等. 2.查看php安装了那些扩展 方法一 ...

  7. xmpppy获取服务器版本信息,为什么XMPP? - 今幕明的个人页面 - OSCHINA - 中文开源技术交流社区...

    为什么XMPP? 在研究XMPP与红隼利用激励因素是被终止虚拟机的问题不作任何清除或信号,机器将离开泳池.XMPP提供用于确定是否一个机器被连接到池的基础设施.它也提供了用于共享连接的机器(空闲,忙碌 ...

  8. php支付宝同步和异步有什么区别,支付宝异步验签和同步验签

    开发支付接口时未使用支付宝提供的 demo ,那个SDK一堆的坑,所以手工写的全部代码,未使用支付宝一点代码.支付一切正常,异步通知一切正常,异步验证正常. 唯独在查询订单和返回数据两个地方搞了半天, ...

  9. 支付宝回调验签失败解决办法

    按照支付宝的文档,调用rsaCheckV1的方法,他已经把方法封装的很透彻了,只需要将取到的参数Map(request.getParameterMap())集合放入即可. 但是验签一直不通过,查了很多 ...

最新文章

  1. iOS UIButton(按钮)
  2. boost库之tcp client 回调不正常
  3. UI自动化之特殊处理三(日期控件\表格\富文本)
  4. 关于共享单车,说点什么
  5. C51 汇编 双层循环延时代码
  6. while(true) 循环中使用了sleep休眠了半小时就中断了_线程中断不是你想中断就能的...
  7. Java自定义JSlider UI
  8. 数据结构---哈夫曼树
  9. Qt中槽函数触发两次的两种场景分析
  10. 建议理解泛型集合-来源于QQ群
  11. php 日期相减 时分秒,PHP计算两个时间戳间隔的日时分秒的代码实例
  12. C语言编写的爱心代码
  13. rk3288 android6.0平台bt1120信号转mipi调试
  14. 【MySQL】--数据库锁机制
  15. 应用程序无法正常启动0xc0150002+vs2005配置opencv2.2.0
  16. 如何暴力破解wifi密码
  17. 公用计算机不使用键盘鼠标,鼠标键盘同时不能用了怎么回事_电脑的键盘和鼠标不能同时用如何解决...
  18. vue 倒计时 插件_vue+moment实现倒计时效果
  19. macbook pro怎么养小宠物?macbook pro养宠物设置方法
  20. linux可以打开浏览器嘛,Linux下怎样可以打开浏览器?

热门文章

  1. 鼠标在计算机上被关闭了怎么处理,鼠标驱动程序丢失导致系统自动关闭的解决方法...
  2. opensuse x64下编译Ice源码(以编译c++为例)
  3. ajaxFileUpload上传文件后提示下载的问题
  4. linux下Oracle 10g安装(超级详细图解教程)
  5. sed与awk命令小结
  6. 英特尔ARM开启芯片之战 消费者该何去何从?
  7. C++基本概念复习之二:多重继承、虚继承、纯虚函数(抽象类)
  8. 6月第2周回顾:雅虎收购案谈崩 中国***成焦点
  9. winform打开cad图纸_为什么CAD图纸打开后会显示很多问号“???”,该怎么解决...
  10. fedora ssh 安装mysql,Fedora中安装和配置OpenSSH | 学步园