0

这是从 HSM 发送和接收数据的代码

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”命令(将 ZPK 从 LMK 转换为 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 程序执行这些操作。

4

1 回答 1

1

组件的生成和密钥的形成通常是控制台操作。生成并形成密钥后,结果将用于 GC 翻译命令

如果您需要通过主机命令生成密钥,您可以使用 A0 命令并使用 GC 命令中的输出

我可能可以通过官方渠道为您提供更多帮助。如果您有支持合同,请给服务台发送电子邮件,并提及您已在 stackoverflow 上提交了一个问题,并且该电子邮件应发送给我


如果您正在寻找有关上述 java 代码的帮助:

您基本上只需要将“命令”中的值替换为您要发送的命令

你目前有

command = "0006303030304e43";

这转换为0000NC包含字节长度的第一个两个字节 - 0006

如果你想发送 A00002U(0=generate; 002=tpk;u=key scheme) 你应该在前面加上一个标题,例如,0000在整个字符串前面加上长度

然后发送的命令0000A00002U是 11 个字节

所以发送到 hsm 的命令(以字节为单位)是

command = "000b3030303041303030303255";
于 2014-07-21T15:11:04.390 回答