- ベストアンサー
Triple-DESでの暗号化について
- Triple-DES(3重DES)は、8byteのデータを2つの鍵を使用して暗号化する方式である。しかし、実際には16byteの鍵を1つしか使用しないため、誤解が生じている。
- 質問者は、Triple-DESでの暗号化について疑問を持っている。仕様書には2つの鍵を使用して8byteのデータを暗号化すると書かれているが、Triple-DESでは実際には16byteの鍵を1つしか使用しないため、どのような意味を持つのか不明瞭である。
- VB.netやC#.netのソースコードを参考にしても、8byteの値を暗号化しても16byteの値が生成されることが分かった。Triple-DESでは、8byteのデータを暗号化するために16byteの鍵を使用することが特徴的である。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> Q1.普通の解釈で、2つの鍵を使って暗号化とは、以下の内どの意味なのでしょうか? トリプルDESは、文字通り、DESを三回施します。 K1を鍵としてDESで暗号化→K2を鍵として復号→K3を鍵として暗号化 という処理になります。 http://ja.wikipedia.org/wiki/%E3%83%88%E3%83%AA%E3%83%97%E3%83%ABDES あとは、暗号化ライブラリ次第ですが、後者(msdn.microsoft…)で挙げられている TripleDESCryptoServiceProvider では、 DESの2つないし3つのキーを連結したものを指定するようです。 http://msdn.microsoft.com/ja-jp/library/system.security.cryptography.tripledes.aspx つまり、TripleDESCryptoServiceProvider を使う場合には、「1.KaとKbを繋げて、鍵とする」が答えになります。 一方、前者(dobon.net…)の方はトリプルDESではない普通のDESを使っているようです。今回の質問者さんの目的にはあいません。 (無印DESでも、上述のようにDESを3回使えばトリプルDES暗号化できますが、トリプルDESのライブラリがあるのですから、わざわざ無駄な手間をかけるよりはそっちを使うべきです) > Q2.8byteの値を暗号化した場合、暗号化された値を8byteで取得する事は出来るのでしょうか? DESに限らず、大抵の暗号化アルゴリズムでは、入力のサイズと出力のサイズは一致します。 つまり、平文が8bytesなら、それを暗号化した暗号文も8bytesになります。 推測になりますが、文字コードの問題で、平文が8文字がUnicode化して16bytesになってるとかいった可能性はありませんか?
お礼
回答ありがとうございました!解決しました。 DES暗号化のソースを参考にプログラムを作成し、回答頂いた方法でトリプルDES暗号化を行った所、目的の暗号化を行う事ができました。 ※参考にした、DES暗号化のソース http://homepage2.nifty.com/nonnon/SoftSample/VB.NET/SampleDES.html >推測になりますが、文字コードの問題で、平文が8文字が >Unicode化して16bytesになってるとかいった >可能性はありませんか? 上記の方法で実現できたので、もう少し形になった所で調査してみたいと思います。 Unicode化されているかも知れない発想は無くて、とても参考になりました。 ありがとうございました。