2014-07-18 33 views
0

下面是代碼從HSM發送和接收數據Java來HSM連接,併發送「GC」/FK」命令

public class TestHSMJava { 
public static void main(String args[]) { 
    System.out.println("<<< Main Method Entry >>>"); 
    String command = null; 
    Socket socket = null; 
    DataOutputStream out = null; 
    DataInputStream in = null; 
    byte[] b= new byte[100]; 
    try { 
     socket = new Socket("10.10.10.10", 7500); 
     System.out.println("<<<Socket>>> :" + socket); 
     if (socket != null) { 
      System.out.println("<<< Connected to HSM >>>:" 
        + socket.isConnected()); 
      in = new DataInputStream (new BufferedInputStream(socket.getInputStream())); 
      out = new DataOutputStream (new BufferedOutputStream(socket.getOutputStream())); 
      command = "0006303030304e43"; 
      out.writeUTF(command); 
      System.out.println("Input to HSM : " +command); 
      out.flush(); 
      String response = in.readUTF(); 
      System.out.println("Output from HSM : " +response); 
      System.out.println(""); 
     } 
    } 
} 

的問題是命令我需要發送的執行命令‘GC’(翻譯從LMK一個ZPK到ZMK加密),我需要生成TPK鍵清晰的組件。通常我做

gc 
Enter key length [1,2,3]: 2 
Enter key type: 002 
Enter key scheme: u 

然後

fk 
Enter key length [1,2,3]: 2 
Enter key type: 002 
Enter key scheme: u 
Enter component type [X,H,T,E,S]: x 
Enter number of components [1-9]: 2 

我需要使用Java程序執行這些操作。

回答

1

組件的生成和密鑰的形成通常是控制檯操作。已經產生和形成的結果將在GC中使用,如果你需要生成通過主機命令鍵,你可以使用A0命令和GC命令使用從輸出轉換命令

關鍵

我可以通過官方渠道更多地幫助你。如果你有一個支持合同,請發送電子郵件您已經提交的問題上計算器的幫助桌面,並提及與電子郵件應該做它的方式對我


,如果你正在尋找幫助有關上述Java代碼:

你基本上只需要替換值「命令」要發送

命令你現在有

command = "0006303030304e43"; 

這翻譯爲0000NC與包含長度以字節爲單位的前兩個字節 - 0006

如果要發送A00002U(0 =生成; 002 = TPK; U =密鑰方案),你應該具有報頭預先考慮這一點,例如,0000並與長度

的命令來發送預先考慮整個字符串然後0000A00002U這是11個字節

因此命令,以字節爲單位,發送到HSM是

command = "000b3030303041303030303255"; 
+0

我嘗試發送相同的命令,我的HSM,但我得到的答覆是000b3030303041303030303135,當其轉換爲ASCII是0000A000015。這裏可能是什麼問題? –