1

我正在开发一个项目,我必须在其中将加密消息从客户端发送到服务器。我使用 SSL 库来加密和解密我的消息。(C 语言) 在服务器端,为了检测它是否是 SSL 握手消息,我检查消息的第一个字节。如果是0x16,则意味着 SSL 握手。但我面临的问题是,握手后进行数据交换时,可以加密也可以不加密。如何识别传入的消息是否加密?注意:对于数据交换,第一个字节不在0x16SSL 中。

4

2 回答 2

0

如果您在两端都使用一些 SSL 库,那么握手将由该库处理。你不必担心它。其次,启用 SSL 的端点之间的通信和数据交换不需要显式加密/解密,因为流经 SSL 通道的所有数据始终是加密的,并且加密解密在 SSL 库之间进行处理。因此,数据的显式加密/解密在 SSL 通道中是多余的,不应该这样做。

但是,如果您的端点在 SSL 和非 SSL 模式之间切换,那么您应该注意在非 SSL 模式下对敏感数据进行显式加密。

于 2013-05-03T06:53:51.463 回答
0

就像握手用于启动加密会话一样,双方必须同意并通知对方他们希望同时停止使用加密。SSL 对此没有任何规定,因此必须在更高级别的应用程序协议中进行处理。您不能根据每条消息决定使用 SSL 或忽略它。一旦 SSL 处于活动状态,所有内容都会被加密。这就是 SSL 的工作原理。如果您确实需要按消息加密,那么您需要在消息内容内部使用加密,而不是在 SSL 运行的传输级别。

于 2013-05-03T06:55:10.947 回答