2011年3月13日 星期日

SecureString 加密字串類別

參考來源
---
Imports System.Security
Imports System.Runtime.InteropServices

Module Module1

Sub Main()
Console.WriteLine("Please enter your password to be encrypted:")

Dim password As SecureString = ReadPassword()

Console.WriteLine()

Console.WriteLine("Decripted password:")

PrintPassword(password)
End Sub


Public Function ReadPassword() As SecureString

Dim password As New SecureString()

Dim nextKey As ConsoleKeyInfo = Console.ReadKey(True)

While nextKey.Key <> ConsoleKey.Enter
If nextKey.Key = ConsoleKey.Backspace Then
If password.Length > 0 Then
password.RemoveAt(password.Length - 1)

' erase the last * as well
Console.Write(nextKey.KeyChar)
Console.Write(" ")
Console.Write(nextKey.KeyChar)
End If
Else
password.AppendChar(nextKey.KeyChar)
Console.Write("*")
End If

nextKey = Console.ReadKey(True)
End While

password.MakeReadOnly()
' make the password read-only.

' return the encrypted password.

Return password

End Function

Public Sub PrintPassword(ByVal password As SecureString)

' Uncrypt the password and get a reference to it...

Dim bstr As IntPtr = Marshal.SecureStringToBSTR(password)


Try
' Printing the uncrypted password...

Console.WriteLine(Marshal.PtrToStringBSTR(bstr))

Finally

Marshal.ZeroFreeBSTR(bstr)

End Try

End Sub

End Module

沒有留言:

張貼留言