問題タブ [commoncrypto]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2510 参照

ios - CCCrypt を使用して Objective-C で作成されたファイルを openssl を使用して復号化するにはどうすればよいですか?

データを暗号化し、アプリ サンドボックス内のファイルに保存する iOS モバイル アプリがあります。ファイルは次のように CCCrypt() を使用して暗号化されます。

キーの長さは 256 ビット、IV の長さは 128 ビットです。私は暗号化の専門家ではありませんが、これは CBC モード (CCCrypt() のデフォルト) を使用する必要があり、ここで指定された PKCS#7 パディング オプションは openssl の PKCS#5 パディングと同等であることを理解しています。

データは次のようにファイルに書き込まれます。

次のようにopensslを使用してファイルの復号化を試みました(キーとivは0に置き換えられました):

どちらも同じエラーを返します:

不正な復号化 28969:エラー:06065064:デジタル エンベロープ ルーチン:EVP_DecryptFinal_ex:不正な復号化:/SourceCache/OpenSSL098/OpenSSL098-50/src/crypto/evp/evp_enc.c:330:

-nosalt や -a などの他のモードやオプションも試しました。クリアテキストを返したものはありません。

オンラインでこれを行う方法の例を見つけるのに何時間も費やしましたが、問題の解決に役立つものは何もありませんでした. 助けていただければ幸いです。

==========

回答: CCCrypt のキーは、256 ビットに変換される 32 文字の文字列です。openssl が期待するキーは、その文字列のバイナリ表現からの 64 の 16 進数です。同様に、CCCrypt の iv は 16 文字の文字列で、128 ビットに変換されます。openssl が期待する iv は、その文字列の 16 進表現です。これら 2 つの 16 進表現を使用すると、簡単に復号化できました。

0 投票する
1 に答える
1598 参照

ios - iOS で x509 証明書の信頼を評価する方法

現在、エンドツーエンドの暗号化を使用して iOS アプリを開発しています。ユーザーが相互に認証できるようにするために、すべてのユーザーは x509 証明書署名要求 (CSR) を生成し、署名のために CSR を CA サーバーに送信します。

ユーザーは、他のユーザーの証明書が CA によって署名されていることを確認することで、別のユーザーを信頼できます。

私の質問は:

iPhone には現在、認証が必要な CA 証明書とユーザー証明書があります。ユーザー証明書が実際に CA によって署名されていることを確認するにはどうすればよいですか?

私の最善の試みは次のコードですが、clientCert を評価する対象が指定されていないため、混乱します。

0 投票する
11 に答える
34245 参照

macos - Swift の CommonHMAC

Swift で文字列の HMAC SHA-1 ハッシュを作成しようとしていますが、CommonCrypto フレームワークをインポートしていないように見えるため、API とやり取りする方法がわかりません。さまざまな形式の「CommonCrypto のインポート」とブリッジング ヘッダー ファイルの作成を試しましたが、どれも違いはありませんでした。

奇妙なことに、Objective-C クラスを作成すると、問題なく API と対話できるため、これは Swift に固有のようです。

また、誰かがuint8_t digest[CC_SHA1_DIGEST_LENGTH]Swift に相当するものを教えてくれたら、とても感謝しています

0 投票する
1 に答える
1025 参照

ios - IV で CommonCrypto を使用するが、常に nil を返す

CommonCrypto CCCryptorCreate を使用してメッセージを復号化しています。パスワードと IV を使用していますが、常に nil が返されます。

CCCryptorCreate を使用して復号化しますが、RUBY 側での暗号化中に IV を使用せず、obj-c 復号化側で IV を使用しない場合、復号化は完全に機能し、メッセージを確認できます。

しかし、RUBY で IV を使用し、obj-c 側で IV を使用すると、復号化は nil メッセージ オブジェクトで終了します。

私はこのEncrypt in Objective-C / Decrypt in Ruby を何かを使用して使用しています

OBJ-C メソッド:

0 投票する
3 に答える
1042 参照

ios - Common Crypto -- 復号化における不正なキーのテスト?

NSDataiOS の Common Crypto を使用してオブジェクトを暗号化および復号化するコードを作成しました。暗号化キーは AES128 で、iOS キーチェーンに保存されます。データを正常に暗号化および復号化できるので、コードの一部が機能していることがわかります。ただし、サニティ チェックとして、2 つ目のAES128 キーも生成し、最初の暗号化キーで暗号化されたデータの復号化を試みました。CCCryptorStatus値が 以外であると予想していましたkCCSuccessが、そうではありませんでした。オブジェクトを受け取りましたが、NSDataエラーはありませんでした。私の暗号化/復号化コードは次のようになります...

暗号化メソッドと復号化メソッドを呼び出すとkCCAlgorithmAES128、アルゴリズムとkCCOptionPKCS7Paddingオプションとして渡されます。適切なエラーを返すことができるように、復号化に不正なキーが使用された場合にキャッチする方法はありますか?

0 投票する
2 に答える
874 参照

commoncrypto - node.js で暗号化し、RNCryptor で復号化する方法

ノードでデータを暗号化し、RNCryptor で復号化するのに問題があります。私の理解では、RNCryptor は特別なデータ形式を使用していますか?

暗号文は次のように生成されます。

そして、私はこのように解読しています:

どうすればいいですか?現在復号化しようとすると、空の NSData が表示され、エラーは発生しません。

0 投票する
2 に答える
6795 参照

swift - Swift: Swift から CCKeyDerivationPBKDF を呼び出す方法

Swift から CCKeyDerivationPBKDF を呼び出そうとしています。

Project-Bridging-Header.h に必要なヘッダーをインポートしました。

(ちなみに、ブリッジ ヘッダーは、私のプロジェクトで他の Objective C コードをインポートするために正しく機能しているようです)。

Xcode では、.swift ファイルから次の定義にジャンプできます。

最後に、次のように関数を呼び出そうとすると:

...次のコンパイラ エラーが発生します。

タイプ '(CCPBKDFAlgorithm, UnsafePointer, size_t, UnsafePointer, size_t, CCPseudoRandomAlgorithm, uint, UnsafeMutablePointer, size_t)' の引数リストで 'init' を呼び出すことはできません

私はすべてのキャストが正しいと信じています (実際、コンパイラ エラーは、各パラメーターの各問題を特定するのに役立ちました) - これにより、コンパイラは CCKeyDerivationPBKDF を呼び出す意図を理解していると思います。

ただし、他のすべてのキャスト エラーが解消された後、コンパイラは混乱し、初期化子を使用してクラスを構築しようとしていると認識します。

誰かが私のやり方の誤りを教えてくれることを願っています。

(Xcode 6 ベータ 7)

要求に応じて、コンテキスト内の完全なコード: