没有加密大小的解密
C++ - Decrypting without encryption size
我已经找了一段时间,我还没有找到这个问题的解决方案。我正在使用BCryptDecrypt来解密我的加密数据,但它需要EncryptedData的大小,您如何能够在不知道大小的情况下解密?
我知道BCryptEncrypt在成功加密数据后给你长度,我知道我如何能够发送加密数据/IV的唯一方法。
例如:假设我要加密数据,然后将其通过带IV的套接字发送到我的WinSock服务器,该服务器将解密数据。服务器如何在不知道密码大小的情况下解密它呢?即使它知道键和IV。谢谢
如果需要大小,我认为有两种方法可以获得:
- 与加密数据一起显式发送。在服务器端缓冲所有数据,直到它被完全接收。跟踪您收到了多少字节。
首先,您可以尝试这样做:
<number of bytes to follow><separator symbol><message data>
第二个要求您能够正确地检测消息的结尾。您可以通过特定的消息结束序列检测到这一点。但是,如果消息中出现了这样的序列,则需要转义。类似于C/c++/Java/c#中字符的转义方式…如果不选择第一种方法,这对我来说似乎是最简单的,我可能会更喜欢下面的变体…
另一种选择可能是在消息完成后关闭连接。然后,您需要检测连接是定期关闭还是断开,因为在后一种情况下,您不能尝试解码…
你甚至可以结合这两种方法:
<message start sequence>
<number of bytes to follow>
<separator symbol>
<encrypted data>
<message end sequence>
消息开始序列和消息结束序列都必须被转义。如果您在加密数据中检测到消息的开始序列,或者在读取字节数之前检测到消息的结束序列,那么您就知道在服务器端出现了严重问题…
相关文章:
- AES加密到解密未正确输出
- 通过 Openssl 命令行加密,通过 c++ 解密
- 将加密消息从 php 发送到 C++ 应用程序,然后使用 CryptoPP 进行解密
- POCO C++加密/解密
- 从加密项目向量中解密任意选择的元素会导致无效的 PKCS #7 块错误
- 尝试从 Visual Studios C++ 中的加密字符串输出解密字符串时出现逻辑错误
- 压缩天然气.AES.错误解密(可能加密)的文件
- 如何制作一个程序,它使用特定单词加密和解密消息?
- 基本加密和解密方法不起作用 C++ 11.
- 异或字符串加密/解密输出错误
- 简单仿射密码加密解密
- QT:AES-256-CBC 根据 PHP 代码在C++中加密/解密
- AES加密/解密接收所有明文
- 从或写入boost :: asio :: ssl :: stream :: next_layer()旁路SSL解密/加密
- AES_cfb128_encrypt不会解密加密文件中的所有字节
- AES 加密C++(无法解密加密文件)
- 在libgcrypt的Crypto++中解密加密数据的步骤
- 使用RSA公钥解密/加密大数据
- 如何解密加密文本
- 解密加密字符串