我正在寻找如何使用 DES 密码和 openssl header 在 C 中编码内容的示例,我找到了这个:http://www.codealias.info/technotes/des_encryption_using_openssl_a_simple_example
代码几乎是完美的,但我不是这方面的专家,而且我在 C 方面的 C 知识并不多,因为我在 PIC 和 AVR 微 Controller 上使用它...
无论如何在代码中:
printf("Clear text\t : %s \n",clear);
memcpy(encrypted,Encrypt(key,clear,sizeof(clear)), sizeof(clear));
printf("Encrypted text\t : %s \n",encrypted);
memcpy(decrypted,Decrypt(key,encrypted,sizeof(clear)), sizeof(clear));
printf("Decrypted text\t : %s \n",decrypted);
如您所见,sizeof(clear) 用作字符串的大小...问题是在示例中我们知道文本字符串的大小...但是当我发送此文本时其他计算机不知道的网络...
如何解决这个问题......我不太明白为什么我需要有原始字符串的大小来解密:S
谢谢!!
最佳答案
The world is full of bad security systems designed by people who read Applied Cryptography.
不要通过网络发送您自己的“加密”内容。您缺少 HMAC,缺少 key 交换协议(protocol),缺少线框协议(protocol)(这正是您问题“我如何知道大小”的答案)。只需使用现成的协议(protocol),如 TLS/SSL。 gnu-tls为 SSL/TLS 提供了一个易于使用的 API,openssl 也支持它,但众所周知使用起来很麻烦。无论您做什么,都不要开始编写自己的协议(protocol),因为错误的 key 交换或“优化的随机数”或丢失的帧签名或其他原因,您会想出另一个损坏的“加密”协议(protocol)。
这是一个使用 gnu-tls 的简单示例:Simple client example using the C++ API
关于C: DES加密问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7085143/