gpt4 book ai didi

用于双向 I/O 的 Java 数据对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:20:33 25 4
gpt4 key购买 nike

我正在开发一个接口(interface),它将加密字节流作为输入——可能是一个非常的字节流——生成或多或少相同格式的输出。

输入格式是这样的:

{N byte envelope}
- encryption key IDs &c.
{X byte encrypted body}

输出格式相同。

这是通常的用例(当然是大量伪代码):

Message incomingMessage = new Message (inputStream);

ProcessingResults results = process (incomingMessage);

MessageEnvelope messageEnvelope = new MessageEnvelope ();
// set message encryption options &c. ...

Message outgoingMessage = new Message ();
outgoingMessage.setEnvelope (messageEnvelope);

writeProcessingResults (results, message);

message.writeToOutput (outputStream);

对我来说,使用同一个对象来封装这种行为似乎是有意义的,但我对应该如何处理这个问题有点不知所措。一次加载所有加密主体是不切实际的;我需要能够流式传输它(因此,我将使用某种输入流过滤器来解密它)但同时我需要能够写出该对象的新实例。完成这项工作的好方法是什么? Message 在内部应该是什么样的?

最佳答案

我不会创建一个类来处理输入和输出 - 一个类,一个职责。我想要两个过滤流,一个用于输入/解密,一个用于输出/加密:

InputStream decrypted = new DecryptingStream(inputStream, decryptionParameters);
...
OutputStream encrypted = new EncryptingStream(outputSream, encryptionOptions);

他们可能有类似惰性初始化机制的东西,在第一次调用 read() 之前读取信封/在第一次调用 write() 之前写入信封。您还可以在过滤器实现中使用 Message 或 MessageEnvelope 等类,但它们可能会保留包保护的非 API 类。

处理将只对流进行解密/加密一无所知。您还可以在处理输入和输出的过程中同时使用这两个流进行输入和输出。

关于用于双向 I/O 的 Java 数据对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/362737/

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