前言

  相信又不少小伙伴在对接第三方接口时遇到过这种情况:参数、排序、加密方式都按照接口文档进行处理了,可就是签名不通过,然后开始怀疑是不是参数漏了?参与加密的参数不对?还是加密方式有问题?最后一顿操作还是签名不通过

遇到这种情况怎么办呢?面向百度编程没有方向基本找不到解决方式,那就@一下对接人吧,然后你就会得到一个回复‘参数没啥问题,签名验证不通过,建议检查签名算法’。哔!

  当陷入困境的时候再看看提供的demo吧(有的话,没有demo的那就只能继续苦逼研究了),如果你会Java说不定还能想到吧demo做成一个服务用来调用(见过这么干过的);

真相

  真相是什么呢?如果没找对方向,怎么都想不到…… 那就是Byte,Byte即字节,由8位的二进制组成,然而问题就在二进制的符号位,区别如下:

  C# Byte 无符号位,值域为[0~255],Java Byte 有符号位,值域为[-128~127]

转换

  知道了问题所在,就很好解决了,我们知道了C#将Byte的符号位用于计算了,那么只需要将C#的Byte的符号位的值减去即可得到Java的Byte,而符号位在最高位,即2^8=256,也就是说C# Byte中的每一位如果大于等于128就减去256,否则就取当前值,这样就得出了Java的Byte值。

  C# ByteTo Java Byte

if(C#Byte[i]>=128)
{
var newByte=C#Byte[i]-256;
}

  

  Java Byte To C# Byte

if(JavaByte[i]<0)
{
var newByte=JavaByte[i]+256;
}

 总结

  由于C#的Byte是无符号类型,取值0~255,Java的Byte类型是有符号类型,取值位-128~127,当获取到Byte后,需要判断Byte有无符号,有符号转无符号就将小于0的值+256;无符号转有符号就将大于127的值-256;

.Net对接Java接口加密不通过?的更多相关文章

  1. php对接java接口

    1.php curl 传参形式 public function send($url,$postData){ $ch = curl_init(); $headers = array("Cont ...

  2. C#与Java AES 加密解密

    参考文档:https://www.cnblogs.com/xbzhu/p/7064642.html 前几天对接Java接口,需要C#加密参数,Java解密.奈何网上找了一堆大同小异的加解密方法都跟Ja ...

  3. 你真的了解字典(Dictionary)吗? C# Memory Cache 踩坑记录 .net 泛型 结构化CSS设计思维 WinForm POST上传与后台接收 高效实用的.NET开源项目 .net 笔试面试总结(3) .net 笔试面试总结(2) 依赖注入 C# RSA 加密 C#与Java AES 加密解密

    你真的了解字典(Dictionary)吗?   从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点.为了便于描述,我把上面 ...

  4. 对接第三方平台JAVA接口问题推送和解决

    前言 本节所讲为实际项目中与第三方对接出现的问题最后还是靠老大解决了问题以此作为备忘录,本篇分为三小节,一小节解析Java加密接口数据,二小节解析XML文件需注意问题,最后一节则是请求Java Soa ...

  5. PHP DES-ECB加密对接Java解密

    最近公司有个业务,需要对接第三方接口,但是参数是需要加密的,对方也只提供了一个java的demo,在网上到处搜索,没有找到直接就能用的方法,后来还是跟公司的Android工程师对接出来的,在这里记录一 ...

  6. bugzilla4的xmlrpc接口api调用实现分享: xmlrpc + https + cookies + httpclient +bugzilla + java实现加密通信下的xmlrpc接口调用并解决登陆保持会话功能

    xmlrpc .  https . cookies . httpclient.bugzilla . java实现加密通信下的xmlrpc接口调用并解决登陆保持会话功能,网上针对bugzilla的实现很 ...

  7. java接口对接——别人调用我们接口获取数据

    java接口对接——别人调用我们接口获取数据,我们需要在我们系统中开发几个接口,给对方接口规范文档,包括访问我们的接口地址,以及入参名称和格式,还有我们的返回的状态的情况, 接口代码: package ...

  8. php 对接java短信接口带有英文逗号就无法通过

    在对接短息接口时,对方是java接口,要求content两次编码 短信内容(Content)发起请求前必须进行URL转码.例如对于短信内容为“中文短信abc”,转码过程如下(java语言): Stri ...

  9. php-app开发接口加密

    自己平时工作中用到的一套接口加密规则,记录下来以后用: /** 2 inc 3 解析接口 客户端接口传输规则: 1.用cmd参数(base64)来动态调用不同的接口,接口地址统一为 http://a. ...

  10. java接口签名(Signature)实现方案续

    一.前言 由于之前写过的一片文章 (java接口签名(Signature)实现方案 )收获了很多好评,此次来说一下另一种简单粗暴的签名方案.相对于之前的签名方案,对body.paramenter.pa ...

随机推荐

  1. Mybatis【7】-- Mybatis如何知道增删改是否成功执行?

    代码直接放在Github仓库[https://github.com/Damaer/Mybatis-Learning/tree/master/mybatis-05-CURD ] 需要声明的是:此Myba ...

  2. Yacc笔记

    语义动是一个C语句的序列 $$ 表是和相应产生式头的非终结符号关联的属性值 $i  表示和相应产生式体中第 i 个文法符号(终结符或非终结符号)关联的属性值 按照产生式规约时会执行关联的语义动作 对于 ...

  3. uni-app小程序(快手)日志打印坑位记录

    前情 uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验也挺棒的,公司项目就是主推uni-app. 坑位 最近在开发一 ...

  4. 【分块】LibreOJ 6279 数列分块入门3

    题目 https://loj.ac/p/6279 题解 将 \(n\) 个元素的数组 \(a\) 按块长 \(\sqrt{n}\) 进行分块处理.为每个块设置一个懒添加标记 \(add[i]\),代表 ...

  5. node-koa2 微信支付-企业付款到银行卡

    微信支付用的V2版本 微信支付说明文档:https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay_yhk.php?chapter=24_2   参数详细 ...

  6. git 忽略某些文件

    如果git项目里没有  '.gitignore' 文件,则需要执行下面的操作,生成一个 生成 '.gitignore' 文件 1. git bash  打开git窗口 执行:touch .gitign ...

  7. java int转byte数组

    int 转 byte[] 低字节在前(低字节序)public static byte[] toLH(int n) { byte[] b = new byte[4]; b[0] = (byte) (n ...

  8. RepeatReadRequestWrapper

    package cn.service.web.common.filter; import com.alibaba.fastjson.JSON; import org.apache.commons.io ...

  9. C# 设置label(标签)控件的背景颜色为透明

    有时候,我们需要将控件的背景颜色设定为透明,比如说label(标签)控件.那么,如何将控件的背景颜色设定为透明?是不是只要将控件的BackColor属性设为Transparent(透明)就可以了呢?答 ...

  10. IM跨平台技术学习(八):新QQ桌面版为何选择Electron作为跨端框架

    本文由QQ技术团队王辉.吴浩.陈俊文分享,编辑Tina整理,本文收录时有内容修订和排版优化. 1.引言 在瞬息万变的互联网行业中,年过二十四的即时通讯IM应用 QQ 堪称超长寿的产品,见证了中国互联网 ...