在将消息发送到套接字之前,是否有由 openssl 提供的附加 header ?
谢谢
最佳答案
我假设您在谈论 TLS(“安全 TCP”)。
那么是的。客户端和服务器之间的握手完成后,“数据”消息通常以 3 个特殊字节(如果我没记错的话)开头,向 SSL 层指示帧已加密。
另一方面,您不能假设加密帧的大小与原始帧/数据相同。
这里是 C/C++ 中的示例函数。
bool isCiphered(const char* buf, size_t buflen)
{
if (buflen < 3)
{
return false;
}
uint8_t c = buf[0];
switch (c)
{
case 0x14:
case 0x15:
case 0x16:
case 0x17:
{
uint8_t v1 = buf[1];
uint8_t v2 = buf[2];
/* TLS v1 */
if ((v1 == 0x03) && (v2 == 0x01))
{
return true;
}
/* DTLS v1 */
if ((v1 == 0xfe) && (v2 == 0xff))
{
return true;
}
break;
}
}
return false;
}
我必须调整我现有的代码,所以我不确定编译是否成功,但你应该明白了。
关于ssl - openssl header ssl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2536542/