DOBON.NET DOBON.NETプログラミング掲示板過去ログ

文字列を複合化するときにパスワードを間違えたら

環境/言語:[XP,.NEt Framework1.0,VisualBasic.NET]
分類:[.NET]

2004/03/31(Wed) 11:03:15 編集(投稿者)
2004/03/30(Tue) 13:41:56 編集(投稿者)

文字列を暗号化する「http://dobon.net/vb/dotnet/string/encryptstring.html」
を拝見して、利用させていただきましたが、困ったことになりました。

暗号化したときと違うパスワードで、複合化しようとしたらエラーが起こります。(当然です。)その時に、どうやってパスワードが違うことを判断させようか悩んでいます。
(つまり、パスワードが違っているときにそれを得る方法がわからない)

今は、「On error goto ○○○」を利用して無理やりエラーを伝えていますが、
これだと、パスワードがあっているのにエラーがおきたときにも、パスワードが違うことになってしまいます。

なにかいい方法があるでしょうか?
■No3386に返信(White Knightさんの記事)

どのようなエラーが発生するのかわかりませんが、VB.NETでしたら
Try〜Catch〜End Try文を使用するのが適切だと思います。
#確かどぼんさんのTipsに使い方が書いてあったと思います。
■No3391に返信(どらごらさんの記事)
> ■No3386に返信(White Knightさんの記事)
>
> どのようなエラーが発生するのかわかりませんが、VB.NETでしたら
エラーの内容は、
「'System.Security.Cryptography.CryptographicException' のハンドルされていない例外が mscorlib.dll で発生しました。

追加情報 : データが正しくありません。

」です。


> Try〜Catch〜End Try文を使用するのが適切だと思います。
> #確かどぼんさんのTipsに使い方が書いてあったと思います。
わかりました。
■No3392に返信(White Knightさんの記事)
> エラーの内容は、
> 「'System.Security.Cryptography.CryptographicException' のハンドルされていない例外が mscorlib.dll で発生しました。
> 
> 追加情報 : データが正しくありません。
> 
> 」です。

 ちょっと、やってみたら思ったよりも難問ですね(^^;
 一応できましたけど、美しくない。でも他のアプローチも思いつかない。
 ごめんなさい。

 P.S.
 そもそもMessageしか、判断方法が無いってのが問題な気がする。

-----
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Try
            TextBox3.Text = Class2.EncryptString(TextBox1.Text, TextBox2.Text)
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Try
            TextBox5.Text = Class2.DecryptString(TextBox3.Text, TextBox4.Text)
        Catch ex As Exception
            If ex.Message = ("データが不正です。" + vbCrLf) Then
                'PassErr
                MsgBox("パスワードが違います")
            Else
                MsgBox(ex.ToString)
            End If
        End Try
    End Sub
■No3407に返信(どらごらさんの記事)
ご返信ありがとうございます。
とりあえず私もTry Catch文を利用したいとおもいます。

ところで、
>No.3391の
>Try〜Catch〜End Try文を使用するのが適切だと思います。
>#確かどぼんさんのTipsに使い方が書いてあったと思います。
ですが、自分がよく見ていないせいかもしれませんが、見つかりません。
どこにあるのでしょうか?
■No3408に返信(White Knightさんの記事)
> ところで、
> >No.3391の
> >Try〜Catch〜End Try文を使用するのが適切だと思います。
> >#確かどぼんさんのTipsに使い方が書いてあったと思います。
> ですが、自分がよく見ていないせいかもしれませんが、見つかりません。
> どこにあるのでしょうか?

ないですね(^^;
もともとスレッド時に、Finallyが実行されなかったために、Tips見て
そう思ったのかも。
http://dobon.net/vb/dotnet/beginner/tryfinally.html

TipsページにInsider.NETの「第16回 例外処理を極める」へのリンクが
ありますけど、ためになります。
ちなみにTry Catch文は、僕が知ってるだけでJava,Delpgi,VS.NET系など
オブジェクト指向言語の大半で使えるので、応用範囲は広いですよ。
■No3414に返信(どらごらさんの記事)
お返事ありがとうございました。

とりあえず解決ですね。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板