gpt4 book ai didi

java - 如何使用 SSLEngine 方法对应用程序数据进行包装和解包?

转载 作者:太空宇宙 更新时间:2023-11-03 13:26:46 27 4
gpt4 key购买 nike

我在 Java 中使用带有 NIO 的 SSL 和一个简单的客户端/服务器概念验证应用程序。我已经启动并运行良好的握手,但之后尝试加密和解密应用程序数据让我抓狂。我想知道我是否遗漏了预期用途方面的内容?

客户端在“payload”中有一条小消息,并尝试像这样对其进行加密以进行传输:

ByteBuffer inb  = ByteBuffer.allocate(payload.length);
ByteBuffer outb = ByteBuffer.allocate(
_sslEngine.getSession().getPacketBufferSize());
SSLEngineResult result = _sslEngine.wrap(inb, outb);
_log.finer("Wrapped " + outb.position() + " octets ("
+ result + ").");
outb.flip();
_log.finer("Cyphertext: " + Buffers.toHexString(outb));

在日志中我看到:

FINER: Wrapped 53 octets (Status = OK HandshakeStatus = NOT_HANDSHAKING
bytesConsumed = 13 bytesProduced = 53).
Sep 30, 2014 1:33:51 PM PoCClientServer.PoCClient write
FINER: Cyphertext: [17 03 01 00 30 ac bd c3 b8 e4 2e a5 9a 43 41 e1 3a 81 b5 cc b6 6f 9b 55 0e 1a a5 e2 97 f1 a2 be 3d ed f8 2d 45 8b 99 35 70 e3 d2 74 6d da 63 34 5a c9 35 1a 96]

所以一切似乎都很好。服务器将其读入“_net”,然后尝试解密:

_log.finer("Unwrapping cyphertext " + Buffers.toHexString(_net));

_app.ByteBuffer.allocate(_sslEngine.getSession().getApplicationBufferSize());
SSLEngineResult result = _sslEngine.unwrap(_net, _app);
_log.finer("Unwrapped " + _app.position()
+ " octets(" + result + ").");
_app.flip();
_log.finer("==> " + Buffers.toHexString(_app));

产生:

FINER: Unwrapping cyphertext [17 03 01 00 30 ac bd c3 b8 e4 2e a5 9a 43 41 e1 3a 81 b5 cc b6 6f 9b 55 0e 1a a5 e2 97 f1 a2 be 3d ed f8 2d 45 8b 99 35 70 e3 d2 74 6d da 63 34 5a c9 35 1a 96]
Sep 30, 2014 1:34:00 PM PoCClientServer.handlers.EchoHandler unwrap
FINER: Unwrapped 13 octets(Status = OK HandshakeStatus = NOT_HANDSHAKING
bytesConsumed = 53 bytesProduced = 13).
Sep 30, 2014 1:34:01 PM PoCClientServer.handlers.EchoHandler unwrap
FINER: ==> [00 00 00 00 00 00 00 00 00 00 00 00 00]

一切似乎又好了...除了明文从未放入“_app”中...我在这里缺少什么?

最佳答案

您从未将负载放入客户端的应用程序发送缓冲区,因此您发送了 13 个空字节。

在那之后,除了拼写错误外,一切都运行良好。

你会认为这不会导致任何东西被发送,因为缓冲区最初是空的,但是因为你没有在 wrap() 之前翻转 () 它,它处于一个看起来有 13 个字节的状态.

关于java - 如何使用 SSLEngine 方法对应用程序数据进行包装和解包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26129867/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com