问题描述
...
字符串srvRand ='d4e005317e38bc0c349a51a0d73a07eb'; 字符串密码='Pass'; 字符串passHash = EncodingUtil.convertToHex(Crypto.generateDigest('MD5',Blob.valueOf(password)));
Blob webApiBlob = Blob.valueOf('WebAPI');
String webAPIBlobToHex = EncodingUtil.convertToHex(webApiBlob);
Blob passAndWebAPIBlob = EncodingUtil.convertFromHex(passHash + webAPIBlobToHex);
String passWebAPIHash = EncodingUtil.convertToHex(Crypto.generateDigest('MD5',passAndWebAPIBlob));
String srvRandAns = EncodingUtil.convertToHex(Crypto.generateDigest('MD5',EncodingUtil.convertFromHex(passWebAPIHash + srvRand)));
Blob blobKey = crypto.generateAesKey(128);
String cliRandString = EncodingUtil.convertToHex(blobKey);
HttpRequest requ = new HttpRequest();
requ.setEndpoint('https://server.address:443/auth_answer?srv_rand_answer=' + srvRandAns + '&cli_rand=' + cliRandString);
requ.setTimeout(10000);
requ.setMethod('GET');
Http h = new Http();
String resstring = '';
HTTPResponse rs = h.send(requ);
resstring = rs.getBody();
System.debug('resstring authconnection is ' + resstring);...
下面的MT5文档中的步骤
srv_rand_answer的形成方式的分步示例: 让我们分析Web password = Password1和srv_rand =“ 73007dc7184747ce0f7c98516ef1c851”。
- 我们以Unicode(在本例中为unicode字符串Password1)计算密码的MD5: MD5('Password1')
结果以字节为单位: [236,46,146,255,112,191,70,145,174,12,104,224,47,220,108,34]
“ WebAPI”表示为= [87,101,98,65,80,73]。结果以字节为单位: [236,34,87,73]
结果以字节为单位: [144,75,168,236,177,115,210,240,156,59,138,2,55,82]
结果为十六进制字符串: 904ba8ecb16273d2f0ae9c3b8a023752
- 合并来自步骤3和SRV_RAND的密码的字节哈希: MD5(MD5('Password1')+'WebAPI')+ [115,125,199,24,71,206,15,124,152,81,110,241,200,81]
其中[115,81]是转换为字节数组的十六进制字符串73007dc7184747ce0f7c98516ef1c851: srv_rand = 73007dc7184747ce0f7c98516ef1c851 = [115,81]
组合的最终结果(将两个字节数组简单地连接在一起): [144,82,81]
- 形成最终的SRV_RAND_ANSWER,作为步骤4字节结果的MD5作为对服务器的响应: MD5(MD5(MD5('Password1')+'WebAPI')+ [115,81]
结果以字节为单位: [119,254,130,127,166,157,216,190,201,170,51,187]
结果转换为十六进制表示形式: 77fe51827f7fa69dd80fbec9aa33f1bb
响应字符串中的最终参数如下: srv_rand_answer = 77fe51827f7fa69dd80fbec9aa33f1bb
身份验证结束 通过交易服务器对客户进行身份验证后,访问服务器将发送响应: {“ retcode”:“ 0完成”,“ answer”:{ “ version_access”:“ 1290”, “ version_Trade”:“ 1290”, “ cli_rand_answer”:“ 8b67609a264764a528ec8c709ab71df2”, } }
LLLLKKKKFAUTH_ANSWER | RETCODE = 0完成| CLI_RAND_ANSWER = 8b67609a264764a528ec8c709ab71df2 | CRYPT_RAND = HEX_256_bytes \ r \ n
但是我收到403响应, 请引导我。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)