問題タブ [rncryptor]
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.
ios - RNCryptor: パフォーマンスを改善するには、どの設定を変更すればよいですか?
アプリで復号化する短い文字列がたくさんあり、復号化の速度が重要です。
現在、私は実験中ですRNCryptor
が、私のユースケースではデフォルト設定が少し遅いことがわかりました。そうでなければ、それは素晴らしいフレームワークです:-)
暗号化は一度だけ実行されるため、そのパフォーマンスは重要ではありません。
非常に基本的な暗号化を行いたいだけなので、速度の保護をあきらめても問題ありません。
RNCryptor
最速の復号化パフォーマンスを達成するために、暗号化と復号化に使用することをお勧めする設定はどれですか? 短いコードサンプルは素晴らしいでしょう!
繰り返しますが、現在の使用例では非常に基本的な暗号化保護で問題ありません。
ios - 大きなファイルでの RNCryptor メモリの問題
最新の RNCryptor を使用してファイル データを暗号化し、ディスクに保存しています。大きなファイル (150MB 以上) を暗号化しようとすると、メモリ警告が表示され、メモリが急速に増加します。
次の解決策を試しましたが、どれもうまくいきません: iOSディスパッチ キューと非同期 RNCryptorで RNCryptor を使用して大きなファイルを暗号化/復号化するときのメモリの問題
これが私の方法です: { - (void)encryptFileDataWithFilePath:(NSString *)filePath { dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
}
何か案が ?ありがとう!
javascript - SJCL 暗号化によるファイル サイズの誤り
私のアプリの 1 つで、iOS 用の Rob Napier の AES 暗号化方式を正常に実装しました。JavaScript の実装を使用して、そのアプリからファイルを暗号化および復号化できるようにしたいと考えています。FileReader を使用してユーザーからローカルを取得し、それをロードしています
これが完了すると、ファイルはStanford JavaScript Crypto Libraryを使用して暗号化され、最終的に暗号化されたファイルをダウンロードできます。
問題は、暗号化されたファイルが元のファイルよりもはるかに大きいことです。これは、正常に動作する私の iOS 実装には当てはまりません。もちろん、エラーなしで復号化することはできません。実際、結果のファイルのサイズは 0 バイトになります。
誰かが私のコードのエラーを指摘してくれることを願っています。それは本当に素晴らしいことです。
@ダンカン:
ありがとうございました。私はそれを調べましたが、私が取らなければならないすべてのステップについてはよくわかりません. 特にコードでの意味。誰かがここで私を助けてくれるかもしれません。どうもありがとう!
暗号化
- ランダムな暗号ソルトを生成する
- PBKDF2 を使用して暗号化キーを生成します (これを呼び出す方法については、言語のドキュメントを参照してください)。パスワードを文字列、ランダムな暗号化ソルト、および 10,000 回の反復として渡します。
- ランダムな HMAC ソルトを生成する
- PBKDF2 を使用して HMAC キーを生成します (これを呼び出す方法については、言語のドキュメントを参照してください)。パスワードを文字列、ランダムな HMAC ソルト、および 10,000 回の反復として渡します。
- ランダムな IV を生成する
- 暗号化キー (上記)、IV (上記)、AES-256、および CBC モードを使用してデータを暗号化します。これは、ほぼすべての AES 暗号化ライブラリのデフォルト モードです。
- ヘッダーと暗号文を HMAC キー (上記) および PRF "SHA-256" と共に HMAC 関数に渡します (PRF 関数の名前についてはライブラリのドキュメントを参照してください。これは "SHA- 2、256 ビット」)。
- これらの要素を上記の形式にまとめます。
php - RNCryptor PHP 暗号化関数が無効な base64 データを返す
iOS プロジェクトで暗号化に RNCryptor を使用しています。アプリは、サーバーから送信された JSON 文字列を復号化します。サーバー上では、文字列はRNCryptor リポジトリにある PHP 関数の変更されていないバージョンを使用して暗号化されます。
すべての文字列の暗号化に同じパスワードを使用すると、返された base64 データが、RNCryptor PHP 暗号化関数に渡すさまざまな JSON 文字列に対して無効になることがあります。アプリで、サーバーからのデータを復号化しようとすると、次のエラーが表示されます。 「操作を完了できませんでした。(net.robnapier.RNCryptManager エラー -4301.)」
いくつかの例を示すために、この base64 文字列は正常に復号化されます。
AwHwsZqlDpvAcmWX92UtkQSKcHOq18gLsLFtP4FujV3DtXVrtGL86CFY9KAs23HaAoYINTLH3ouUJPpyQEcfXni+rJUJghTFBB24kk52aU0GQ/8IIgfnXPUywUuNwD4n7DnweaS3DdmdhFBQIUpSaCEg4T5bMPhIvUAndVMvJwc/SjbhJoB+bUqRDcPYXPzMiEW1i4jea/ssE87PcX9/NZtfkoNyiY7KLRy/dhgsADde1Q==
ただし、これは失敗します。
AwHH7y0mnQvtWNCKa73jnS2DG63ylqDBc5iema3G6+/EkwPxiIkrPQHyJLvd3MO3mMIPsJjDK1C3uBCoHDc+Gzm0NJhBa08zs1twzZQ1jBdyt/q2AnGX99nku7MqF1oJOJ8nN1lriwYcFyvjBoBkEAAG28umjwxb5Y1t29dXtJzCwsrEVERs+SNkRE5C/j++bMPTV28EmR7LviyaMFAzpT+F5yUlLp2zRQgaQfyG8RlJTcvc+IqsrOisrDn7umDg+ii/Z9GDLlMkhu7OL1lHfcmD
「=」文字を含む base64 文字列のみが正常に復号化されるようです。繰り返しますが、同じパスワードを使用して、これら 2 つの文字列を暗号化および復号化しました。PHP の暗号化関数がこのように動作するのはなぜですか?
PS 渡された JSON 文字列は完全に有効です (PHP json_encode() 関数を使用して生成されます)。
ios - RNCryptor パスワード暗号化
例として次のコードを使用しています。私が間違っている場合は助けてください。
私のアプリには、セットアップとログインのページがあります。ユーザーがアカウントを作成するたびに、パスワードを暗号化されたキーチェーンに保存する必要があります。セキュリティを強化するために、おそらくユーザー名を行う必要があります。そのため、RNCryptor を使用して、ユーザーがアカウントを作成するときにキーチェーンでユーザーのユーザー名とパスワードを暗号化したいと考えています。
kPassword
RNEcryptor メソッドで使用するパスワードがわかりません。UUID, username and a random 40 character salt hash
私は当初、パスワードをキーチェーンに暗号化するためにで構成される SHA256 ハッシュを使用することを考えていました。後で RNCryptor を見つけましたが、代わりにSHA256 hash
asを使用できるかどうか、kPassword
または他の代替手段があるかどうか疑問に思っていました。
ios - RNCryptor を使用する iPhone アプリには暗号化登録が必要ですか?
RNCryptor を使用してアプリ ストアに投稿されたアプリは、エクスポート暗号化登録に登録する必要があります (つまり、暗号化登録番号 ERN を取得します)?
私はそれらを使用していないので、すべての SSL ファイルを削除しました。残りのコードは Apple の CommonCrypto ライブラリのみを使用しているようですが、100% ではありません。
objective-c - パスワード検証 - 入力したパスワードが正しいかどうかを安全に確認する方法
さまざまなデータ領域にアクセスするために複数のパスワードを必要とするアプリを開発しています。たとえば、ユーザーのグループは、表示するためにパスワード認証が必要なチャットを設定できます。
これが私がそれを行うことを検討している方法です:
私は自分のキーワードを持っています。仮説的に言ってみましょう:
バナナ
ユーザーがパスワードを入力すると、RNCryptor をBanana
使用して入力したキーを使用して暗号化し、その暗号化された文字列をサーバーに保存します。
後で誰かがパスワードを入力しようとすると、サーバーからハッシュ値を取得し、入力したパスワードをキーとして使用して復号化を試みます。復号化された値が等しい場合、Banana
彼らが正しいパスワードを入力したことがわかります。
私はセキュリティに不慣れなので、これが適切な解決策になるかどうかわかりません。すべての助けに感謝します。
アップデート
@Gregと適切な名前の@Anti-weakpasswordsによって提案されたいくつかの変更を行った後、ここに私が持っているものがあります:
ios - 暗号化されたデータが改ざんされていないことを検証する
RNCryptor v2.2 ObjectiveC ライブラリを使用して暗号化された文字列があります。暗号化後、iPhone にローカルに保存されます。
文字列を元に戻したい場合は、復号化する前に、暗号化された文字列が改ざんされていないことを確認したい (手動で文字を変更したなど)。
どうすればこれを確認できますか?
前もって感謝します!