हमने एचएसबीसी सीपीआई इंटरफेस के साथ एक ही समस्या को मारा।
एचएसबीसी एक नेट रैपर की आपूर्ति नहीं करता है, और COM wrapper को 64 बिट ऐप से नहीं कहा जा सकता है।
यह 64 सर्वर (जो शायद 25% नए उत्पादन सर्वर को कवर करता है) से इसे तैनात करता है व्यावहारिक रूप से असंभव।
हमने सूचीबद्ध कुछ दृष्टिकोणों को देखा, लेकिन वे बहुत सारे काम की तरह लग रहे थे। के आस-पास गड़बड़ी के बाद अंत में हमारे अपने कार्यान्वयन के साथ आया, जो जैसा कुछ दिखता है।
आप 32-बिट COM dll रजिस्टर करने के लिए चाहते हैं, तो निम्नलिखित जावा कोड का उपयोग करें मध्यवर्ती हैश
import java.io.Console;
import java.lang.*;
import java.util.*;
import com.clearcommerce.CpiTools.security.HashGenerator;
import com.clearcommerce.CpiTools.security.SecCrypto;
import javax.xml.bind.annotation.adapters.HexBinaryAdapter;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.Vector;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
public class Extract {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try
{
String encryptedKey = "<YOUR SECRET KEY HERE>";
if (args.length == 1)
encryptedKey = args[0];
HexBinaryAdapter hb = new HexBinaryAdapter();
SecCrypto sc = new SecCrypto();
byte abyte0[] = sc.decryptToBinary(encryptedKey);
System.out.println("New Secret Base64 Encoded : " + new String(Base64Coder.encode(abyte0)));
System.out.println("New Secret Hex Encoded : " + hb.marshal(abyte0));
return;
}
catch(Exception ex)
{
System.out.println("Error:" + ex.getMessage());
}
}
}
पाने के लिए फिर हैश calcualte को
using System;
using System.Collections.Generic;
using System.Text;
namespace HsbcIntergration
{
internal static class CpiHashing
{
<USE THE VALUE RETURNED FROM THE JAVA CODE HERE>
private static readonly byte[] _secret = new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
public static string ComputeHash(List<string> inputList)
{
return ComputeHash(inputList, _secret);
}
public static string ComputeHash(List<string> inputList, byte[] secretData)
{
List<string> orderedDataToHash = new List<string>(inputList);
orderedDataToHash.Sort(StringComparer.Ordinal);
StringBuilder sb = new StringBuilder();
foreach (string s in orderedDataToHash)
sb.Append(s);
List<byte> dataToHash = new List<byte>();
dataToHash.AddRange(Encoding.ASCII.GetBytes(sb.ToString()));
dataToHash.AddRange(secretData);
System.Security.Cryptography.HMAC sha = System.Security.Cryptography.HMACSHA1.Create();
sha.Key = secretData;
return Convert.ToBase64String(sha.ComputeHash(dataToHash.ToArray(), 0, dataToHash.Count));
}
}
}
धन्यवाद क्रिस यह काम करता है। दुर्भाग्यवश एचएसबीसी 64 बिट ऑपरेटिंग सिस्टम का समर्थन नहीं करता है। –