3

xcodeでアプリケーションから暗号化された文字列を読み取っていますが、RSA復号化を使用してメッセージをデコードおよび表示する関数を作成する必要があります。

私はこれからどこから始めればよいのか完全に迷っています。

私はOpensslをxcodeに準拠させており、openssl/rsa.hファイルを使用しています。

私は関数を使おうとしています:

RSA_private_decrypt(int flen, const unsigned char *from, unsigned char *to, RSA *rsa, int padding);

しかし、Opensslのメインサイトのどこかで、関数が実際の文字列ではなく数値を返すだけであると読みました。また、どのパラメンターを通過させるべきかわかりません。

私が見つけた唯一の参照は、openssl / rsa.hファイルと、それに含まれる関数を調べていることです。

過去数時間、いくつかの調査を試みましたが、答えが見つかりませんでした。

暗号化された文字列と秘密鍵を(ファイルまたはハードコードを使用して)渡すことができ、復号化された文字列を返すことができる単純な関数があるかどうか疑問に思いましたか?

そうでない場合は、Objective CプログラミングでOpensslを使用する方法に関するガイドがありますか?

この問題についてさらに情報が必要な場合はお知らせください。

前もって感謝します。

4

1 に答える 1

1

セキュリティの概要でセキュリティ変換を使用する(これによりopensslを回避する)Appleの例を確認することをお勧めします。

少し運が良ければ、アップルのトランスフォームを使って何かを行うことができ、そのプログラムを実行できます。

そうでない場合、または何らかの理由で本当にopensslを使用したい場合。次に、opensslソースにサンプルファイルが含まれていますopenssl-0.9.8t/apps/rsa.c。これにより、選択的なカットアンドペーストで機能させることができます。

コマンドman RSA_private_decryptラインから実行すると、マニュアルページが表示されます(またはXcode内からマニュアルページに移動します)。または、http://www.openssl.org/docs/crypto/RSA_public_encrypt.htmlを参照してください

上記の使用例:

unsigned char in[] = { 1, 2, ... byte array to decrypt };
// size of that in byte array
int inlen = sizeof(in);

// output buffer size depends on the key type.
char * out = malloc(RSA_size(rsa)); 

int e = RSA_private_decrypt(inlen, in, out, rsa, RSA_PKCS1_PADDING);

ここで、パディングはマンページの値の1つです。

rsaの値は、初期化するのが少し複雑です。これは、キーを設定する場所であり、そうでない場所であるためです。上記のrsa.cファイルをチェックして、さまざまな入力方法の例を確認してください。通常、次のようになります。

EVP_PKEY *pkey = load_key( ... , password,... );
rsa = EVP_PKEY_get1_RSA(pkey);

ここでload_key、opensslのアプリの例から借用しています。

于 2012-07-13T20:22:47.517 に答える