gpt4 book ai didi

ssl - 如何预测 SslEncryptPacket 输出的大小

转载 作者:行者123 更新时间:2023-12-04 22:37:25 25 4
gpt4 key购买 nike

通常 Win32 API 可以判断所需的输出缓冲区的长度。只需传递 0 作为缓冲区长度,API 返回错误 BUFFER_TOO_SMALL 和所需的字节数。

但是和SslEncryptPacket就不一样了.它只是返回关于小缓冲区的错误,仅此而已。

还有SslLookupCipherLengths我认为应该使用它,但是文档没有提供有关如何计算具有该信息的输出缓冲区的线索。

也许你能说出来?通常我会保留 + 千字节,但在我的情况下,我需要确切地知道。

最佳答案

您可能已经知道,为了通过 TLS/SSL 握手,您反复调用 SSPI-> InitializeSecurityContext (在客户端)或 SSPI-> AcceptSecurityContext (在服务器端)。
一旦函数返回 SEC_E_OK,您应该调用 SSPI-> QueryContextAttributes使用 SECPKG_ATTR_STREAM_SIZES 来确定 header 和尾标的大小。它还告诉您用于 SSPI 的 SecBuffer 数量-> EncryptMessage函数,它告诉您可以传递给 EncryptMessage 的消息的最大大小。
据我了解,返回的值可能会因操作系统为连接选择的加密类型而异。我对 TLS/SSL 不是很熟悉,但我认为它使用 5 个字节作为标题,36 个字节作为页脚,16384 个字节作为最大消息长度。您的里程可能会有所不同,因此您应该调用 QueryContextAttribute(... SECPKG_ATTR_STREAM_SIZES ...)。

关于ssl - 如何预测 SslEncryptPacket 输出的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44581054/

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