Imports System.Security.Cryptography Public Class EnDec Private TripleDes As New TripleDESCryptoServiceProvider Sub New(ByVal key As String) ' Initialize the crypto provider. TripleDes.Key = TruncateHash(key, TripleDes.KeySize \ 8) TripleDes.IV = TruncateHash("", TripleDes.BlockSize \ 8) End Sub Private Function TruncateHash( _ ByVal key As String, _ ByVal length As Integer) _ As Byte() Dim sha1 As New SHA1CryptoServiceProvider ' Hash the key. Dim keyBytes() As Byte = _ System.Text.Encoding.Unicode.GetBytes(key) Dim hash() As Byte = sha1.ComputeHash(keyBytes) ' Truncate or pad the hash. ReDim Preserve hash(length - 1) Return hash End Function ''' ''' 문자열의 암호화 ''' ''' ''' ''' Public Function EncryptData( _ ByVal plaintext As String) _ As String ' Convert the plaintext string to a byte array. Dim plaintextBytes() As Byte = _ System.Text.Encoding.Unicode.GetBytes(plaintext) ' Create the stream. Dim ms As New System.IO.MemoryStream ' Create the encoder to write to the stream. Dim encStream As New CryptoStream(ms, _ TripleDes.CreateEncryptor(), _ System.Security.Cryptography.CryptoStreamMode.Write) ' Use the crypto stream to write the byte array to the stream. encStream.Write(plaintextBytes, 0, plaintextBytes.Length) encStream.FlushFinalBlock() ' Convert the encrypted stream to a printable string. Return Convert.ToBase64String(ms.ToArray) End Function ''' ''' 복호화' ''' ''' ''' ''' Public Function DecryptData( _ ByVal encryptedtext As String) _ As String ' Convert the encrypted text string to a byte array. Dim encryptedBytes() As Byte = Convert.FromBase64String(encryptedtext) ' Create the stream. Dim ms As New System.IO.MemoryStream ' Create the decoder to write to the stream. Dim decStream As New CryptoStream(ms, _ TripleDes.CreateDecryptor(), _ System.Security.Cryptography.CryptoStreamMode.Write) ' Use the crypto stream to write the byte array to the stream. decStream.Write(encryptedBytes, 0, encryptedBytes.Length) decStream.FlushFinalBlock() ' Convert the plaintext stream to a string. Return System.Text.Encoding.Unicode.GetString(ms.ToArray) End Function ''' ''' 파일로부터 문자열을 읽어옵니다. ''' ''' ''' Public Function Read_STring(ByVal Filename As String) As String Dim cipherText As String = My.Computer.FileSystem.ReadAllText(Filename) ' DecryptData throws if the wrong password is used. Try Dim plainText As String = DecryptData(cipherText) Return plainText MsgBox("해독값은? " & plainText) Catch ex As System.Security.Cryptography.CryptographicException Return "" MsgBox("암호화키가 일치하지않거나 기타 오류입니다") End Try End Function ''' ''' 파일에 해당 문자열을 기록합니다. ''' ''' ''' ''' Public Sub Write_String(ByVal Filename As String, ByVal Contents As String) Dim cipherText As String = EncryptData(Contents) MsgBox("암호화된값은? " & cipherText) My.Computer.FileSystem.WriteAllText(Filename, cipherText, False) End Sub End Class