- PR -

DESの暗号化について

1
投稿者投稿内容
未記入
大ベテラン
会議室デビュー日: 2005/03/23
投稿数: 105
投稿日時: 2007-11-15 13:15
いつもお世話になります。

今現在DESの暗号化について調べています。
その中で疑問に思ったことがあるので、
わかられる方がおられましたら教えて下さい。

※DESの暗号化の結果はOSやプログラム言語によって
 異なる?

 DESを調べている中で色々なプログラムのサンプル
 があり暗号化をためしてみたのですが、(javascript,
vb.net,php等)
 どれも違う暗号結果が返ってきます。

 例:str→aaaa
キー:bbbb

 暗号化後の文字列
サンプルA:cccc
サンプルB:cbca
サンプルC:ciek
  ※文字列は適当なものをセットしているので
   実際のものとは異なります。

ちなみに暗号化の文字列を同じサンプルの
複合化機能を使えばきちんと複合できます。

宜しくお願いします。
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2007-11-15 13:23
引用:

未記入さんの書き込み (2007-11-15 13:15) より:
いつもお世話になります。

今現在DESの暗号化について調べています。
その中で疑問に思ったことがあるので、
わかられる方がおられましたら教えて下さい。

※DESの暗号化の結果はOSやプログラム言語によって
 異なる?

 DESを調べている中で色々なプログラムのサンプル
 があり暗号化をためしてみたのですが、(javascript,
vb.net,php等)
 どれも違う暗号結果が返ってきます。

 例:str→aaaa
キー:bbbb

 暗号化後の文字列
サンプルA:cccc
サンプルB:cbca
サンプルC:ciek
  ※文字列は適当なものをセットしているので
   実際のものとは異なります。

ちなみに暗号化の文字列を同じサンプルの
複合化機能を使えばきちんと複合できます。

宜しくお願いします。


文字列の特徴によって、分かる人にはアルゴリズムについて心当たりがあるかもしれないので、「サンプル」では無くて実データの変換結果を書いてくれませんでしょうか?

で、同じ「DES」でも、ブロックのサイズによって結果が違うし、モードによっても結果が違うし、ブロックに足りない部分の文字列をどうパディングするか?によっても結果が違うので、そこの所を調べてみるといいかもしれません。

(というか、実際に暗号化について勉強してみた方がよく分かるのかな。)
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-11-15 13:33
暗号化のアルゴリズムが同じでも、
文字列から文字列への暗号化の場合、
文字列の符号化方式によって結果は全然違います。


[ メッセージ編集済み 編集者: かつのり 編集日時 2007-11-15 13:34 ]
末記人
大ベテラン
会議室デビュー日: 2005/12/05
投稿数: 233
お住まい・勤務地: あわにこ
投稿日時: 2007-11-15 13:53
こんにちは

みためは同じ文字列でも同じバイト列であるとは限らないのでは?
エンコード、改行コードの種類がそれぞれ等しいですか?

あとは冬寂様がおっしゃるとおりパディングの実装の違いですかね。


蛇足ですが、複合化ではなく復号化ですよ。
未記入
大ベテラン
会議室デビュー日: 2005/03/23
投稿数: 105
投稿日時: 2007-11-15 14:00
みなさんお返事ありがとうございます。

もう少し具体的に書きますと
http://www.onicos.com/staff/iz/amuse/javascript/expert/
サイトにあるjavascriptで暗号化すると
文字:abcd
キー:efg
暗号化文字:U9BRv6Oafjg=

http://dobon.net/vb/dotnet/string/encryptstring.html
サイトにあるvb.netで暗号化すると
文字:abcd
キー:efg
暗号化文字:OYxUlvaY82Q=

となります。(他にもありますが長くなるので省略します。)

前述でみなさんがかかれているように方式等によって
結果はまちまちということがわかりました。
今度は逆に暗号化した文字列を違うプログラムの方で
複合化すると複合化できずでたらめな文字列が帰って
きました。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2007-11-15 14:04
それを言うなら「復号」(化は要らない)では…というのはありがちですか。
末記人
大ベテラン
会議室デビュー日: 2005/12/05
投稿数: 233
お住まい・勤務地: あわにこ
投稿日時: 2007-11-15 14:40
引用:

mioさんの書き込み (2007-11-15 14:04) より:
それを言うなら「復号」(化は要らない)では…というのはありがちですか。



そうですね。
あえて化をつけるなら、平文化ですかね?
暗号に対して明号という言葉があれば...
blunder
ベテラン
会議室デビュー日: 2003/09/11
投稿数: 65
投稿日時: 2007-11-17 13:45
引用:

もう少し具体的に書きますと
http://www.onicos.com/staff/iz/amuse/javascript/expert/
サイトにあるjavascriptで暗号化すると
文字:abcd
キー:efg
暗号化文字:U9BRv6Oafjg=

http://dobon.net/vb/dotnet/string/encryptstring.html
サイトにあるvb.netで暗号化すると
文字:abcd
キー:efg
暗号化文字:OYxUlvaY82Q=

となります。(他にもありますが長くなるので省略します。)

前述でみなさんがかかれているように方式等によって
結果はまちまちということがわかりました。
今度は逆に暗号化した文字列を違うプログラムの方で
複合化すると複合化できずでたらめな文字列が帰って
きました。




opensslで復号してみるとよいです。
私がやってみたところでは、上の両方とも元の平文である"abcd"に復号で
きました。
暗号の方式が異なるのではないかという疑問をお持ちかもしれませんが、
復号してみると両方とも同じ方式であることがわかりました。
違いは方式ではなくて別のところにあります。
もちろんOSとか、プログラミング言語とかには依存しません。
あとは実際にやってみるとわかりますので、これ以上は書きません。では。
1

スキルアップ/キャリアアップ(JOB@IT)