4

Rijndael アルゴリズムを使用すると、構成ファイル (または構成ファイル内のセクション) を暗号化し、Java でそのファイルを復号化できますか? 次のような仮定を立てることができます。

  1. IV を渡す (自動生成されたアイデア :: GenerateIV(); ではない)
  2. キーを渡す
  3. BlockSize は 128 (標準)

これができると仮定すると、これに関する私の次の質問は次のようになります。

  1. keySize を 256 にすることはできますか? 128 が AES であることはわかっていますが、256 を使用したいと考えています。また、Java に 256 用のプロバイダーがあるかどうか、または BouncyCastle を使用する必要があるかどうかもわかりません。
  2. パディングとは何ですか?PKCS7?
  3. CiperMode は CBC になると思います

C#でこんな感じ?しかし、Javaで解読できるかどうかはわかりません...おそらく私のc#でさえ間違っていますか?

public static void initCrypt()
    {
        byte[] keyBytes = System.Text.UTF8Encoding.UTF8.GetBytes("abcdefghijklmnop");

        rijndaelCipher = new RijndaelManaged();
        PasswordDeriveBytes pdb = new PasswordDeriveBytes(keyBytes, new SHA1CryptoServiceProvider().ComputeHash(keyBytes));
        byte[] key = pdb.GetBytes(32);
        byte[] iv = pdb.GetBytes(16);
        rijndaelCipher.Mode = CipherMode.CBC;
        rijndaelCipher.Padding = PaddingMode.PKCS7; //PaddingMode.PKCS7 or None or Zeros
        rijndaelCipher.KeySize = 256; //192, 256
        rijndaelCipher.BlockSize = 128;
        rijndaelCipher.Key = keyBytes;
        rijndaelCipher.IV = iv;
    }
4

3 に答える 3

2

keyczarなどの外部ライブラリがこれをサポートしているかどうかを確認します。

Jeff Atwoodが最近彼のブログで教えてくれ たように、99% の開発者は暗号化ルーチンの低レベルの詳細に関心を持つべきではありません (おそらくそれらを台無しにするからです)。

于 2009-06-16T20:12:00.493 に答える
1

この設定ファイルの使い方によっては、外部プログラムを使用したい場合があります。

たとえば、ディスク上にある構成ファイルを保護したいが、プログラムの実行中にその内容がメモリに保持されても問題ない場合は、gpgを使用してファイルを暗号化し、プログラムを起動するときに必要なユーザー提供のパスワード、およびプログラムをシャットダウンするときにメモリをクリアします。[1]

[1]メモリのページングなどのために、コンテンツがディスクに書き込まれないことを保証する実際の方法はないことに注意してください。これは、オペレーティング システムと、興味がある場合に調べることができる多くの要因に依存します。

于 2009-06-16T19:13:48.547 に答える
0

Q1 : 128 でなければなりません。そうしないと、BouncyCastle を使用する必要があります。

Q2 : はい PKCS7

Q3 : はい CBC

あなたの質問が死んでいない場合は、c# と Java の実際の例を示します。

于 2011-02-23T15:32:43.127 に答える