gau*_*rav 1 java salesforce force.com apex-code
我需要在force.com apex中转换这个java代码.我试图使用Crypto类来获得相同的加密,但没有得到如何在APEX的最后一个变量"fingerprintHash"得到相同的值.任何人都可以帮我解决这个技术问题吗?
Random generator = new Random();
sequence =Long.parseLong(sequence+""+generator.nextInt(1000));
timeStamp = System.currentTimeMillis() / 1000;
try {
SecretKey key = new SecretKeySpec(transactionKey.getBytes(), "HmacMD5");
Mac mac = Mac.getInstance("HmacMD5");
mac.init(key);
String inputstring = loginID + "^" + sequence + "^" + timeStamp + "^" + amount + "^";
byte[] result = mac.doFinal(inputstring.getBytes());
StringBuffer strbuf = new StringBuffer(result.length * 2);
for (int i = 0; i < result.length; i++) {
if (((int) result[i] & 0xff) < 0x10) {
strbuf.append("0");
}
strbuf.append(Long.toString((int) result[i] & 0xff, 16));
}
fingerprintHash = strbuf.toString(); //need this result for variable x_fp_hash
Run Code Online (Sandbox Code Playgroud)
我尝试的顶点代码是: -
String API_Login_Id='6########';
String TXn_Key='6###############';
String amount='55';
sequence = '300';
long timeStamp = System.currentTimeMillis()/1000;
String inputStr = API_Login_Id + '^' + sequence + '^' + timeStamp + '^' + amount + '^';
String algorithmName = 'hmacMD5';
Blob mac = Crypto.generateMac(algorithmName,Blob.valueOf(inputStr),Blob.valueOf( TXn_Key));
String macUrl =EncodingUtil.urlEncode(EncodingUtil.base64Encode(mac), 'UTF-8');
Run Code Online (Sandbox Code Playgroud)
问题似乎是你在javaside上对输出进行十六进制编码,但base64编码顶点一侧的输出,尝试使用EncodingUtils.convertToHex而不是EncodingUtils.base64Encode
| 归档时间: |
|
| 查看次数: |
1740 次 |
| 最近记录: |