1

iPhone の ObjC で Java (Android) コードを書き直そうとしています。コードは基本的な Web サービス呼び出しを実行し、認証情報を含むいくつかのヘッダーを設定する必要があります。

その情報の一部は、私が送信しているデータの暗号化されたハッシュです。

Java バージョンは、電話で生成された RSA 秘密鍵を使用して SHA256 署名を計算します。秘密鍵は、私が入手したシードを使用して生成されます。

(簡略化された) Java コードは次のとおりです。

KeyFactory keyFactory = KeyFactory.getInstance("RSA");
Signature sig = Signature.getInstance("SHA256WithRSAEncryption");

// I get the private key bytes from an outside source
EncodedKeySpec privateKeySpec = new PKCS8EncodedKeySpec(privateKeyBytes);
sig.initSign(keyFactory.generatePrivate(privateKeySpec));

sig.update(/* insert my data here */);
return sig.sign();

今、私は iOS と ObjC でこれを再現しようとしています。SHA256 署名の計算は簡単ですが、秘密の RSA キーを簡単に作成する方法がわかりません。利用可能な組み込み API がある場合はそれを使用したいと思いますが、OpenSSL のようなサード パーティのライブラリを使用する必要がある場合は、それも使用できます。

4

1 に答える 1

2

ほとんどの人 (引用が必要) は、サードパーティの OpenSSL ライブラリを使用することを選択します。これは、独自の暗号を作成するのが難しいだけでなく、まだ経験がない場合、悪い暗号を作成する可能性が高いためです。

そうは言っても、必要に応じてストレート C または C++ で独自の SHA256 ハッシュを作成することを妨げるものは何もありませんが、PRNG オプションが不足していて、エントロピー プールなどにあまりにも多くの時間を費やしていることに気付くと思います。

OpenSSL の余分な荷物を一切使わずに優れた SHA256 プリミティブを見つけた場合は、それについても学びたいと思います! しかし、これまでのところ、私は見たことがありません。

于 2013-11-12T15:05:37.633 に答える