2009-06-16 16 views
4

Rijndaelアルゴリズムを使用すると、設定ファイル(または設定ファイル内のセクション)を暗号化し、そのファイルをJavaで解読できますか?キー Javaで暗号化し、RijndaelでC#で解読する

  • のBlockSizeで
  • パスで128(標準)
  • これを仮定し、

    1. IVにおけるパス(自動生成されないアイデア:: GenerateIVは()):仮定は、とすることができます次の質問は次のようになります。

      1. keySizeは256になりますか?私は128がAESであることを知っていますが、256を使用したいと思います。Javaに256​​のプロバイダがあるのか​​、BouncyCastleを使用する必要があるのか​​わかりません。
      2. Paddingとは何ですか? 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; 
          } 
      

    答えて

    1

    この設定ファイルの使用状況によっては、外部プログラムを使用することができます。

    たとえば、ディスクに常駐している間に設定ファイルを保護したいが、プログラムの実行中にその内容がメモリに保持されている場合は、gpgを使用してファイルを暗号化し、解読することができます起動時にプログラムが必要とするユーザー提供のパスワードを使用してメモリに格納し、プログラムをシャットダウンするときにメモリを消去します。[1]

    [1] に保証する実際の方法がないことに注意する価値があります。メモリページングなどのためにディスクに内容が書き込まれません。それはオペレーティングシステムとそれに興味があるならあなたが調べることができる多くの要因に依存します。

    2

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

    としてジェフ・アトウッドhas taught usin his blog最近、開発者の99%が暗号化ルーチンの低レベルの詳細と自分自身に関わるべきではありません(私たちは、おそらくそれらを台無しになりますので)。

    +0

    絶対に - なぜ私は外部プログラムをお勧めしますか? –

    +0

    彼は、このことを抽象化した例としてbouncycastleを使用しています。私はそれをしたいと思うので、私はずいぶん違うことはしていません...私はプロバイダがクロスプラットフォームで動作することを確認したいだけです。 –

    +1

    暗号化アルゴリズムはアルゴリズムに過ぎません。だから、それはプラットフォームに依存してはならない。ファイルを暗号化するために1つの言語で取ることができる一連のステップは、他の言語でコードを記述して解読できるようにする必要があります。そうでない場合は、アルゴリズムに問題があります。 –

    0

    Q1:それは128になるように持っているか、あなたははBouncyCastleを使用する必要があります

    Q2:はいPKCS7

    Q3:あなたの質問は死んでいない場合は[はいCBCは

    私はあなたの作業の例を与えることができます

    +0

    私は例を見ることに興味があります。私は似たようなことをしようとしています –

    関連する問題