如何使用OpenSSL编码/解码任意数据?

时间:2012-04-11 16:38:14

标签: c++ linux encryption openssl aes

我有一个C ++应用程序,它有自己的例程来发送和接收数据。我想使用OpenSSL对部分数据应用AES加密。不幸的是,我无法像大多数示例那样将整个连接移交给OpenSSL,我甚至无法为OpenSSL提供读取数据的套接字。

我想将数据作为内存缓冲区传入和传出,我也将密钥单独传输。有没有人举例说明如何使用OpenSSL API?

我已经看到了代替OpenSSL的内部指针和结构的代码,但依赖于某个OpenSSL版本,我非常想避免这种情况。

2 个答案:

答案 0 :(得分:1)

我认为你应该看看cryptlib http://www.cs.auckland.ac.nz/~pgut001/cryptlib/

以下是cryptlib网站上示例链接的摘录:

CRYPT_SESSION cryptSession;

/* Create the session */
cryptCreateSession( &cryptSession, cryptUser, CRYPT_SESSION_SSL_SERVER );

/* Add the server key/certificate and activate the session */
cryptSetAttribute( cryptSession, CRYPT_SESSINFO_PRIVATEKEY, privateKey );
cryptSetAttribute( cryptSession, CRYPT_SESSINFO_ACTIVE, 1 );

看起来很简单,但对我来说,花了一些时间(并且仍然需要一些时间)来学习如何使用cryptlib完成我想要的东西。我认为它会解决你的问题!源代码可用,DLL有一个C API。试试看。 (听起来像商业广告,但除了作为用户之外,我与cryptlib没有关系。)

答案 1 :(得分:1)

我认为你实际上想要使用加密库,它是OpenSSL的一部分。以下是如何使用它的示例:

http://saju.net.in/code/misc/openssl_aes.c.txt