2011-10-26 4 views
1

私は単純な文字列をエンコードするためにopensslを使用しようとしていますが、解読する必要はありません。 私は関数を使用しています、私は私が考える必要opensslを2つの関数だけコンパイルする方法

AES_set_encrypt_key() 
AES_cfb128_encrypt() 

は唯一のインクルードは、次のとおりです。

#include <openssl/aes.h> 
私は、Webまたはのためのソースコードをコンパイルする方法についてはOpenSSLのWebサイトの指示を見つけることができませんでした

ビジュアルスタジオプロジェクト。誰がこれをどうやってやるべきか知っていますか? これら2つの関数に関連するコードのみをコンパイルできますか?

どうもありがとう、私はあなたのコードでこれらの関数を使用したい理解

答えて

4

。 OpenSSLをコンパイルする必要はありません。

開発マシンにパッケージをインストールします(Windowsの場合は、最新のインストーラhereを入手できます)。コードに含める必要があるヘッダーファイル(c:\OpenSSL-Win32\include\openssl)、アプリケーションを(c:\OpenSSL-Win32\lib\VC)にリンクするために必要な静的ライブラリ、およびアプリケーションが実行するDLL(c:\OpenSSL-Win32\bin)が含まれます。

だから、あなたのコードでは、あなたが持っているでしょう:

#include <openssl/aes.h> 
... 
AES_set_encrypt_key(...); 
... 
AES_cfb128_encrypt(...); 
... 

あなたのコンパイラは、あなたが(opensslディレクトリへのパスを)含まれるヘッダへのパスを知っている必要がありますので、それを提供する必要があります。 Visual Studioを使用している場合は、プロジェクト設定を開き、追加のインクルードディレクトリにc:\OpenSSL-Win32\includeを追加します。

リンカーセクションで、追加の依存関係にssleay32MDd.lib;libeay32MDd.lib;を追加すると、リンカーは検索するOpenSSLライブラリを知ることができます。これらのライブラリのパス - c:\OpenSSL-Win32\lib\VC - 追加のライブラリディレクトリに追加します。

これらのライブラリはアプリケーションと同じランタイムライブラリにリンクする必要があります。それらのサフィックスは、それらがリンクされているランタイムライブラリを示します:上記のライブラリは、マルチスレッドDLL(/ MDd)を使用することを意味するサフィックスMDdを持っています。生成 - >ランタイムライブラリ設定)。

あなたのアプリケーションは今ビルドされますが、それを実行するためにバイナリはOpenSSL DLL libeay32.dllにアクセスする必要があります。そのDLLをシステムディレクトリまたはアプリケーションを実行しているディレクトリにコピーするか、パスc:\OpenSSL-Win32\binPathを環境変数に追加します。

+0

ありがとう、これはうまくいきました。 –

+0

ようこそ。私はそれが助けてうれしいです。 –