import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import org.knowm.xchange.bitmex.service.BitmexDigest;
import org.knowm.xchange.utils.nonce.ExpirationTimeFactory;
import si.mazi.rescu.SynchronizedValueFactory;
public class SignatureUtil {
private SynchronizedValueFactory<Long> nonceFactory = new ExpirationTimeFactory(30);
private Long EXPIRES = (long)0;
private String API_SECRET;
private String API_KEY;
public SignatureUtil(String API_KEY,String API_SECRET){
this.API_SECRET = API_SECRET;
this.API_KEY = API_KEY;
}
public String bitmex_signature() throws UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeyException {
BitmexDigest BD = BitmexDigest.createInstance(API_SECRET);
String API_SIGNATURE = "";
String ENDPOINT = "/realtime";
String VERB = "GET";
String BITMEX_URL ="wss://www.bitmex.com";
EXPIRES = nonceFactory.createValue();
String data = VERB+ENDPOINT+String.valueOf(EXPIRES);
return BD.digestString(data);
}
public String getAPI_SECRET() {
return API_SECRET;
}
public void setAPI_SECRET(String aPI_SECRET) {
API_SECRET = aPI_SECRET;
}
public String getAPI_KEY() {
return API_KEY;
}
public void setAPI_KEY(String aPI_KEY) {
API_KEY = aPI_KEY;
}
public Long getEXPIRES() {
return EXPIRES;
}
public void setEXPIRES(Long eXPIRES) {
EXPIRES = eXPIRES;
}
}
xchange 활용한 wss 적용 
String bitmex_signature = signatureUtil.bitmex_signature();
ws.sendText("{\"op\" : \"authKeyExpires\", \"args\" : [\""+signatureUtil.getAPI_KEY()+"\","+signatureUtil.getEXPIRES()+",\""+bitmex_signature+"\"]}");