[報告].NET Tipsのサンプルに問題
- 題名: Re[1]: [報告].NET Tipsのサンプルに問題
- 著者: 深山
- 日時: 2005/06/18 13:25:22
- ID: 11333
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: [報告].NET Tipsのサンプルに問題
- 著者: 管理人
- URL: http://dobon.net
- 日時: 2005/06/19 4:27:13
- ID: 11343
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[4]: [報告].NET Tipsのサンプルに問題
- 著者: smith
- 日時: 2005/06/19 17:13:51
- ID: 11344
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[5]: [報告].NET Tipsのサンプルに問題
- 著者: 管理人
- URL: http://dobon.net
- 日時: 2005/06/20 3:50:39
- ID: 11352
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
対象
http://dobon.net/vb/dotnet/string/encryptfile.html(ファイルを暗号化する)
内容
必ず暗号化に失敗する。
詳細
暗号化時にファイルの最後に必ずNULLが入り、
復号化したファイルの容量が元のファイルより1バイト大きくなる。
復号化したファイル容量が増えているため、
最初は復号化部分に問題があるのだと考えましたが、
別のツールを使用して暗号化したファイルは問題なく復号化できたため、
暗号化部分に問題があることが分かりました。
プログラムには問題はなさそうなので、おそらく.NET Frameworkのバグです。
使用している暗号化方式(DES)の仕様ではありません。
暗号化部分(EncryptFile)の、
'すべて読み込む
Dim bytesIn(fsIn.Length) As Byte
fsIn.Read(bytesIn, 0, bytesIn.Length)
を、
'すべて読み込む
Dim bytesIn(fsIn.Length - 1) As Byte
fsIn.Read(bytesIn, 0, bytesIn.Length)
または、
'すべて読み込む
Dim bytesIn(fsIn.Length) As Byte
fsIn.Read(bytesIn, 0, bytesIn.Length - 1)
と書き換えることで対策することができます。
当方VB.NET 2002にてこの現象を確認しましたので、
.NET FrameworkのバグならC#でも発生するはずですが、
VB.NET 2003でも発生するのかなど、他の方の声と、
管理人様へTipsの修正をお願いしたく、掲示板に書き込ませていただきました。
問題としては復号化されたファイルの最後にNULLが1バイト入るだけであり、
このままの状態でも復号化されたMP3やJPEGファイルの再生に特に問題はなく、
それほど大きな問題ではないのかもしれませんが、一応よろしくお願いします。