我需要在force.com apex中轉換此java代碼。我試圖使用Crypto類來獲得相同的加密,但沒有得到如何獲得APEX中最後一個變量「fingerprintHash」的相同值。任何人都可以幫我解決這個技術問題嗎?Java加密和Force.com apex加密
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
頂點的代碼,我試圖爲: -
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');
@LanceySnr感謝快速回復。我沒有得到我如何可以存儲fingar打印哈希值在尖頂,因爲他們存儲在Java中。 ((int(int)result [i]&0xff)<0x10){ – gaurav 2011-12-16 11:33:00
如果((int(int)result [i]&0xff)<0x10)strobf.append(「0 「); } – 2011-12-16 11:38:31