我正在开发一个项目,在这个项目中,我必须发送加密消息从客户端到服务器。我使用SSL库来加密和解密我的消息。(C语言)在服务器端,为了检测它是否是SSL握手消息,我检查消息的第一个字节。如果是0x16,则表示使用SSL握手。但我面临的问题是,当数据交换在握手之后完成时,它可以是加密的或未加密的。如何识别传入的消息是否加密?注意:对于数据交换,在SSL中第一个字节不是0x16。
发布于 2013-05-03 14:53:51
如果你在两端都使用了一些SSL库,那么握手将由该库来处理。你不需要担心它。其次,启用SSL的端点之间的通信和数据交换不需要显式加密/解密,因为流经SSL通道的所有数据始终被加密,并且加密解密在SSL库之间进行。因此,数据的显式加密/解密在SSL通道中是多余的,不应该这样做。
但是,如果您的端点在SSL和非SSL模式之间切换,那么您应该注意在非SSL模式下对敏感数据进行显式加密。
发布于 2013-05-03 14:55:11
就像握手用于启动加密会话一样,双方必须达成一致,并同时通知对方他们希望停止使用加密。SSL没有这方面的规定,因此它必须在更高级别的应用程序协议中处理。您不能决定使用SSL,也不能逐条消息地忽略它。一旦SSL激活,所有内容都会被加密。这就是SSL的工作原理。如果您确实需要按消息加密,则需要在消息内容内使用加密,而不是在SSL操作的传输级别使用加密。
https://stackoverflow.com/questions/16353133
复制相似问题