• ベストアンサー

Triple DESについて

C#でTriple DESを実装しております http://code.msdn.microsoft.com/10-C-70e9f385/ を参照しております キーと初期ベクタは、 TripleDESCryptoServiceProvider TDES = new TripleDESCryptoServiceProvider(); DesKey = TDES.Key; DesIV = TDES.IV; で与えられますが、具体的にはどのような値なのでしょうか? 何か意味のある値でしょうか? それとも、8バイトの乱数を発生させているだけなのでしょうか? ご指導よろしくお願いいたします

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

IVは自動的に乱数をセットすると書いてありますね。 http://msdn.microsoft.com/en-us/library/system.security.cryptography.symmetricalgorithm.iv%28v=vs.90%29.aspx Keyについては何で初期化するというのは特に書いていないようです。 http://msdn.microsoft.com/en-us/library/system.security.cryptography.tripledes.key%28v=vs.90%29.aspx 実際に表示させてみると、ランダムかどうか分かりそうですが、不安だったらgenerateKeyで生成するか、自分でRNGCryptServiceProviderを使って乱数を生成するとよいでしょう。 http://msdn.microsoft.com/en-us/library/system.security.cryptography.tripledescryptoserviceprovider.generatekey%28v=vs.90%29.aspx http://stackoverflow.com/questions/5349321/generate-random-bytes-for-tripledes-key-c-sharp 余談ですが、新しいプログラムを書いているなら、Triple DESなんて過去のプログラムとの互換性の意地のために存在するようなアルゴリズムではなくて、AESを使うことをおすすめします。TripleではないDESは既に攻略されていますし、DESは1回でもAESに比べてずっと遅いです。 TripleDESと書いてあるところをAesに変えてとIV長と鍵長をちょろっと直したら動くと思います。(鍵やIVにnew byte[??]とかしていなかったら、単にTripleDESをAesに変えるだけで動くはずです) http://msdn.microsoft.com/ja-jp/library/system.security.cryptography.aescryptoserviceprovider.aspx

gin57773222
質問者

お礼

勉強になりました ありがとうございました

関連するQ&A