問題タブ [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.
android - iOS の spongycastle 暗号化に相当するもの
これは私を困惑させました-次のコードはAndroid用のSpongyCastleの暗号化/復号化を使用しています-私はiOS用のクロスプラットフォーム暗号化/復号化を達成しようとしています.
次のコード (Android から) は、提供されたソルトとパスワードを使用して、PKCS7Padding を使用した AES 128 ビット CBC を処理します。ソルトは mysql データベースに保存されます。パスワードはエンドユーザーによって作成されます。kelhoerで答えてください。
私が AES128bit を使用した理由は、AES256 は iOS 4+ では利用できず、iOS5+ で導入されopenssl
、派生キーと初期化ベクトルを生成するためにつま先を使用する必要があり (iv)、Apple が拒否したことを学んだので危険でした。 openssl ライブラリと静的にリンクされているアプリ。
プラットフォームは iOS 4.2+ に基づいているため、openssl ライブラリをバンドルして静的にリンクすることに頼ったのは、やり過ぎのようであり、CommonCryptor ライブラリを使用することをお勧めします。
Spongycastle コードを配置した Android バージョンは次のとおりです。
ただし、iOS 4.2 (XCode での作業) では、同等の方法を理解できません。
これは、これをテストするために、mysql データベースに保存されている Android 側からのデータを復号化することを目的として、Objective C で試したものです。
データとユーザーのパスワードを提供し、CCCrypt
asからリターン コードを取得し-4304
ました。
おそらくエンコーディング スキームが CommonCryptor の復号化ルーティングを無効にするのではないかと考えましたNSASCIIStringEncoding
。
Salt は暗号データとともに格納され、長さは 32 バイトです。
この点で私が欠けているものは、暗号化が苦手であることを念頭に置いてください。
php - PHP を使用した AES CTR リトル エンディアンの復号化
iOS 5.x の CommonCrypto ライブラリで暗号化された文字列を PHP で復号化するのに問題があります。パラメータは次のとおりです。
これが私の最善の試みのサンプルです。
出力は次のようになります。
しかし、それは " Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do... " (末尾の省略記号を含む) である必要があります。
ブロック サイズは 16 で、最初の 16 文字を正しく取得しています。これは、Mcrypt と CommonCrypto の間の AES CTR カウンターインクリメント プロセスの不一致を示しているようです。私がこれまでに聞いたすべての人は、これはビッグ エンディアンとリトル エンディアンの問題だと示唆しています。
私はこのエンディアンとカウンターインクリメントのすべてを自分で理解しようと何日も費やしましたが、それでも私にとってはブードゥーです。:-( 文字列を適切に復号化する PHP コードが必要なだけです。アルゴリズムがどれほど速く動作するかは気にしません。Mcrypt を捨てて、PHP ネイティブ ソリューションまたはその他の PHP 拡張機能を使用することにオープンです。ただし、iOS 側で変更することはできません。
助けてください!
ios - iOS CommonCrypto リファレンス
Apple の CommonCrypto ライブラリに関する何らかのリファレンスを見つけようとしています。明らかに、Apple には明確なリンクがなく、Google から提供されたものは以下のように古くなっているためです。
これに関するヒントはありますか?多くの暗号化機能を備えたアプリを開発するために使用できるより良いライブラリはありますか?
ありがとう。
ios - Obj-C: CommonCrypto で、CCCrypt() がオプション kCCOptionPKCS7Padding を使用しない場合、結果バッファは空です
kCCOptionPKCS7Padding を削除すると、次の関数は空の暗号データ <> で正しいバッファ サイズを返します。kCCDecrypt オプションを使用して空の暗号文を平文に復号化できません。
kCCOptionPKCS7Padding がない場合、暗号化エンジンは機能しません。したがって、オプションではなく必須のように見えます。
私の質問:
CCCrypt() を PKCS7 パディングなしで動作させるのは誰ですか?
iphone - iOS の X.509 ASN.1 RSA 公開鍵からの SecKeyRef
スタック オーバーフローで既に尋ねようとしている質問と同様の質問がたくさんあることを認識していますが、どれも私のニーズを本当に満たす明確な回答を持っていないので、ここで説明します。
私のプログラムは、ネットワーク経由で ASN.1 でエンコードされた RSA 公開鍵を受け取ります。単純な NSData インスタンスにデータを格納しています。その公開鍵を使用して 16 バイトのデータをエンコードし、それらをネットワーク経由で返したいと考えています。私の調査によると、これを行う最善の方法は SecKeyRef を使用することです。Apple が提供する途方もなくあいまいなドキュメントによると、これはいくつかのコードを使用して行うことができます。ただし、彼らのコードには問題があります。公開鍵を使用するたびに、それをキーチェーンに追加して一意の識別子を付与する必要があります。これに関する問題は、このキーが1 回しか使用されないことです。キーチェーンになく、ASN.1 でエンコードされたキーから作成されたキーの SecKeyRef を取得する方法を探しています。
また、base64 エンコードで一般的な PEM に変換し、'-----BEGIN PUBLIC KEY-----' と '-----END PUBLIC KEY-----' でラップする可能性も検討しました。 ' そしてそれを SecKeyRef にロードしますが、これを行う方法も見たことがありません。
また、キーのタイプ、キーの形式などにあまり選択肢がありません。サードパーティのJavaサーバーからのものです。わーい。
私は現在、(おそらく)キーをキーチェーンに追加しないキーをロードするこの代替方法を持っていますが、キーは明らかに(試行錯誤による:D)DER形式ではないため、このようにロードできません。
PS: なぜアップルはこれを難しくしているのですか? OpenSSL を静的にリンクするのは簡単ですが、そうするとあらゆる種類の輸出規制やその他の問題が適用されます。
ios - Base64 でエンコードされた文字列を AES で復号化すると、エラー ステータス 4301 (バッファが小さすぎます) が発生する
Objective-CAES
でエンコードされた暗号化された文字列を復号化したい:Base64
これは私のコードです:
コードを実行すると、結果は次のようになります。Status = -4301, output = null
ドキュメントによると、ステータス 4301 = 「バッファが小さすぎます」
コードをデバッグするとき、変数は次のように設定されます。
エラーは、オプションkCCOptionPKCS7Padding
が設定されている場合にのみ発生します0
。ステータス = 0、出力 = {} に設定されている場合。
SO で多くのコード サンプルを確認しましたが、コードに問題はありません。
私のコードの何が問題なのか、何か考えはありますか?
ところで:base64string
このサンプル コードで使用しているコードは、オープン ソース フレームワークhttp://www.movable-type.co.uk/scripts/aes.htmlを使用して JavaScript で作成されています。この情報が役立つかどうかはわかりません。