C: DES加密问题

标签 c encryption openssl des

我正在寻找如何使用 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/

相关文章:

c - 如何优化公式?

c - 是否需要在单独文件中的每个函数中编写#include<stdio.h>? C

c# - 在 C# 中使用 Bouncy CaSTLe 在 CCM 中加密 AES 密码

oracle - 将 OpenSSL 生成的私钥导入 Oracle Wallet

http - 服务器实用程序 : receive HTTPS POST requests, cat 数据

c - 在 C 中取证删除硬盘上的文件

c++ - 使用 OpenCV 从图像中提取数字

Java javax.crypto 和 PHP openssl_decrypt 不相同

encryption - Chef解密数据包并找回 key

c++ - openssl:减少内存使用