Imports System.Security.Cryptography
Imports System.IO

Module Module1

    Sub Main()
        ' Pobieramy dane
        Console.WriteLine("Wpisz tajny komunikat i naciśnij klawisz Enter.")
        Console.Write(">")
        Dim Input As String = Console.ReadLine()
        Console.WriteLine()

        If Input <> "" Then
            Dim Data(), EncodedData() As Byte

            ' Zapisujemy dane w nowym strumieniu MemoryStream
            Dim DataStream As New MemoryStream()
            Dim Writer As New StreamWriter(DataStream)
            Writer.Write(Input)
            Writer.Close()

            ' Przekształcamy MemoryStream w tablicę bajtów,
            ' co jest niezbędne do użycia metody ProtectData()
            Data = DataStream.ToArray()

            ' Szyfrujemy tablicę bajtów
            EncodedData = ProtectedData.Protect(Data, Nothing, _
              DataProtectionScope.CurrentUser)

            ' Zapisujemy zaszyfrowane dane w pliku
            My.Computer.FileSystem.WriteAllBytes("c:\secret.bin", EncodedData, False)


            ' Sprawdzamy, czy dane są zaszyfrowane, odczytując je
            ' i wyświetlając bez odszyfrowywania
            DataStream = New MemoryStream(EncodedData)
            Dim Reader As New StreamReader(DataStream)
            Console.WriteLine("Zaszyfrowane dane: " & Reader.ReadToEnd())
            Reader.Close()
            Console.WriteLine()
        End If


        If My.Computer.FileSystem.FileExists("c:\secret.bin") Then
            Dim Data(), EncodedData() As Byte

            EncodedData = My.Computer.FileSystem.ReadAllBytes("c:\secret.bin")
            Data = ProtectedData.Unprotect(EncodedData, Nothing, _
              DataProtectionScope.CurrentUser)

            Dim DataStream As New MemoryStream(Data)
            Dim Reader As New StreamReader(DataStream)

            Console.WriteLine("Zdekodowane dane z pliku: " & Reader.ReadToEnd())
            Reader.Close()
            Console.WriteLine()
        End If

        Console.ReadLine()

    End Sub

End Module
