0
我们有一些网络控制器(Aruba)可以在UDP端口上向RTLS服务器发送HMAC-SHA1签名消息。我们编写了简单的Java程序,并部署在接收UDP端口数据包的Linux服务器上。控制器使用一个密钥对消息进行签名,因此我们以消解格式获取消息如下。有没有一种方法可以使用共享密钥从中提取实际的消息?Java读取HMAC-SHA1签名消息
RECEIVED:* GDRE $�p��s�〜�����q���2 RECEIVED:,$drÈ�H)��5ï ¿½r�[�b×C�`�� 已收到:0� ������a��#�ï�cL�iï¿¿ ½?�� 已收到:+ïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïïï¿
Java代码接收消息:
public class UDPServer
{
public static void main(String args[]) throws Exception
{
DatagramSocket serverSocket = new DatagramSocket(9999);
byte[] receiveData = new byte[1024];
byte[] sendData = new byte[1024];
while(true)
{
DatagramPacket receivePacket = new DatagramPacket(receiveData, receiveData.length);
serverSocket.receive(receivePacket);
String response = new String(receivePacket.getData(), 0,
receivePacket.getLength(), "UTF-8");
System.out.println("RECEIVED: " + response);
//
}
}
}
可能会遗漏您的问题,但HMAC用于确保邮件是真实的。共享密钥和消息用于产生特殊的散列,如果它等于在消息结尾处发送的散列,则该消息是可信的。所以如果只使用一个HMAC,那么其余的数据都是纯文本的,应该能够被读取(可以是二进制格式,查看文档)。但是,如果也正在使用加密,则必须先使用共享密钥来解密数据才能读取数据。 –