1

キー派生を生成するために scrypt を使用していますが、問題は出力が 256 ビットより大きいことであり、256 ビット キーを使用して AES-GCM で使用したいと考えています。では、どうすればそれを行うことができますか?Androidでアプリを作ろうとしています。

編集:詳細情報を提供できなくて申し訳ありません..私が使用しているライブラリはこれです https://github.com/wg/scrypt

これは私が得ている出力です

"$s0$e0801$eX8cPtmLjKSrZBJszHIuZA==$vapd0u4tYVdOXOlcIkFmrOEIr1Ml2Ue1l2+FVOJgbcI="

これは、AESエンジンが処理できる範囲を超えているので、どうすれば使用できますか

4

1 に答える 1

2

Scrypt は鍵導出アルゴリズムです。つまり、これを使用して、任意の数の疑似ランダム バイトを生成できます。

wg ライブラリでは、これを行う方法はScrypt.scrypt関数を呼び出すことです:

byte[] key = Scrypt.scrypt(password, salt, N, r, p, 32);

これにより、必要な32バイトのキー マテリアルが得られます。

キーの派生とパスワードの保存

あなたの混乱は理解できます。wg/scryptのドキュメントには、scrypt の実際の使用法については言及されていません。彼らは、パスワード保存アルゴリズムの使用のみを文書化しています。

そのため、誤ってScryptUtil.scryptを呼び出していました ( Scrypt.scryptではなく):

string hash = ScryptUtil.scrypt(password, N, r, p);

このメソッドは文字列を返しますが、これはAES (またはその他の種類の) 暗号化のキーには適していません。

于 2015-05-18T15:57:45.280 に答える