投稿者 YAS  (社会人) 投稿日時 2011/6/20 23:48:55
>後、そのWebBrowserでしかみることのできないページを作成することは可能でしょうか? 

ページ全体を暗号化しておき,WebBrowserに読み込まれたタイミングで復号化して表示するという
アイディアはどうでしょう?

暗号化・復号化は次のサンプルをそのまま使った物です。
http://msdn.microsoft.com/ja-jp/library/ms172831(VS.80).aspx

まず,デスクトップに「HomePage.html」というファイルを作り,次の文字列をコピーして保存します。
lVwQGb3PcjN0n8o5jfMtkG7yQf9KusW+ehcwfqeNcUmh9xyDZjWLVbbYnY+RrbiUzvfbpRbhqfxDiIqr6i2EP05Bwy5oTFXv3kFdAkcXRf0o3IplTMiQJGOzK5Id/TKmxDvDPmfo9WXPjMFBqB+DPjaI0k2ygqawOIIJTurLZgQGL/XYR6ok+/qCK379qVuXBdiA+N4PC4U=


次に,以下のコードを実行します。

Imports System.Security.Cryptography

Public Class Form1

    Private WithEvents WebBrowser As New WebBrowser With {.Dock = DockStyle.Fill}

    Private Sub Form1_Load(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles MyBase.Load
        Me.Controls.Add(WebBrowser)
        Me.WebBrowser.Navigate(My.Computer.FileSystem.SpecialDirectories.Desktop & "\HomePage.html")
    End Sub

    Private Sub WebBrowser_DocumentCompleted(ByVal sender As ObjectByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser.DocumentCompleted
        If Me.WebBrowser.Url.ToString <> "about:blank" Then
            Dim cipherText As String = Me.WebBrowser.DocumentText
            Dim password As String = "VB2010"
            Dim wrapper As New Simple3Des(password)
            Dim plainText As String = wrapper.DecryptData(cipherText)
            Me.WebBrowser.DocumentText = plainText
        End If
    End Sub

End Class


Public NotInheritable Class Simple3Des

    Private TripleDes As New TripleDESCryptoServiceProvider

    Private Function TruncateHash(ByVal key As StringByVal length As IntegerAs Byte()
        Dim sha1 As New SHA1CryptoServiceProvider
        Dim keyBytes() As Byte = System.Text.Encoding.Unicode.GetBytes(key)
        Dim hash() As Byte = sha1.ComputeHash(keyBytes)
        ReDim Preserve hash(length - 1)
        Return hash
    End Function

    Sub New(ByVal key As String)
        TripleDes.Key = TruncateHash(key, TripleDes.KeySize \ 8)
        TripleDes.IV = TruncateHash("", TripleDes.BlockSize \ 8)
    End Sub

    Public Function EncryptData(ByVal plaintext As StringAs String
        Dim plaintextBytes() As Byte = System.Text.Encoding.Unicode.GetBytes(plaintext)
        Dim ms As New System.IO.MemoryStream
        Dim encStream As New CryptoStream(ms, TripleDes.CreateEncryptor(), System.Security.Cryptography.CryptoStreamMode.Write)
        encStream.Write(plaintextBytes, 0, plaintextBytes.Length)
        encStream.FlushFinalBlock()
        Return Convert.ToBase64String(ms.ToArray)
    End Function

    Public Function DecryptData(ByVal encryptedtext As StringAs String
        Dim encryptedBytes() As Byte = Convert.FromBase64String(encryptedtext)
        Dim ms As New System.IO.MemoryStream
        Dim decStream As New CryptoStream(ms, TripleDes.CreateDecryptor(), System.Security.Cryptography.CryptoStreamMode.Write)
        decStream.Write(encryptedBytes, 0, encryptedBytes.Length)
        decStream.FlushFinalBlock()
        Return System.Text.Encoding.Unicode.GetString(ms.ToArray)
    End Function

End Class


すると,
「暗号化されたホームページを解読して表示する。」
と表示されるはずです。
このページはどんなブラウザでもアクセスはできますが,内容を表示できるのはこのブラウザだけです。
だいぶ無理があるやり方ですが,一応条件を満たしていると思います。どうでしょうか。