最近公司有个业务需要对接第三方接口,但是需要对参数进行加密,对方只提供了一个javademo。在网上到处找,也没找到直接的使用方法。后来跟公司的Android工程师聊了聊。对接后,这里记录一下大概的过程。首先说明对方需要的接口请求方式。格式为:http://ip:port/interface/method?data=abstract@@16进制字符串说明:1、请求参数需要组合成a=1&b=2&c=3格式的参数字符串;2、生成摘要的方法是md5('a=1&b=2&c=3');3、十六进制字符串的生成方法是对参数字符串进行**对称加密(DES-ECB)**,然后转换成十六进制字符串(bin2hex函数);对方提供的demo(java版)如下:publicclassDesUtils{/**Defaultkey*/privatestaticStringstrDefaultKey="seeyonssokey";/**加密工具*/privateCipherencryptCipher;/**解密工具*/privateCipherdecryptCipher;/***加密字符串*@paramstrIn待加密字符串*@return加密字符串*@throwsException*/publicStringencrypt(StringstrIn)throwsException{returnbyteArr2HexStr(encryptCipher.doFinal(strIn.getBytes()));}/***解密字符串*@paramstrIn待解密字符串*@return解密字符串*@throwsException*/publicStringdecrypt(StringstrIn)throwsException{returnnewString(decryptCipher.doFinal(hexStr2ByteArr(strIn)));}/***将字节数组转换为表示十六进制值的字符串,如:byte[]{8,18}转换为:0813,而publicstatic*byte[]hexStr2ByteArr(StringstrIn)可逆转换过程*@paramarrB待转换的字节数组*@return转换后的字符串*@throwsException该方法不处理任何异常,所有异常都抛出*/publicstaticStringbyteArr2HexStr(byte[]arrB)throwsException{intiLen=arrB.length;//每个字节只能用两个字符表示,所以字符串的长度是数组长度的两倍StringBuffersb=newStringBuffer(iLen*2);for(inti=0;i
