代码之家  ›  专栏  ›  技术社区  ›  deddihp

openssl头ssl

  •  2
  • deddihp  · 技术社区  · 16 年前

    在将消息发送到socket之前,openssl是否提供了额外的头?

    谢谢

    1 回复  |  直到 16 年前
        1
  •  1
  •   ereOn    16 年前

    我想你说的是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;
        }
    

    我不得不修改我现有的代码,所以我不确定是否可以编译,但你应该明白这一点。