System.Security.Cryptography.DESCryptoServiceProvider クラスを使用し、DES (Data Encryption Standard) アルゴリズムにより文字列の暗号化、復号化を行います。
''' <summary> ''' 文字列を暗号化します。 ''' </summary> ''' <param name="value">暗号化する文字列</param> ''' <param name="key">暗号キー</param> ''' <returns>暗号化後の文字列</returns> ''' <remarks></remarks> Public Shared Function Encrypt(ByVal value As String, ByVal key As String) As String 'キーをバイト型配にし、8バイトにリサイズします。 Dim bKey As Byte() = System.Text.Encoding.UTF8.GetBytes(key) Array.Resize(bKey, 8) 'DES暗号化プロバイダオブジェクトを作成します。 Dim des As New System.Security.Cryptography.DESCryptoServiceProvider des.Key = bKey des.IV = bKey '暗号化されたデータを書き出すためのメモリーストリームオブジェクトを作成します。 Using memStream As New System.IO.MemoryStream() 'データ ストリームを暗号変換にリンクするストリームを定義します。 Using cryptStream As New System.Security.Cryptography.CryptoStream( _ memStream, des.CreateEncryptor, _ System.Security.Cryptography.CryptoStreamMode.Write) '書き込むためのストリームライターを作成します。 Using sw As New System.IO.StreamWriter(cryptStream) '暗号化前の文字列を書き込みます。 sw.WriteLine(value) sw.Close() cryptStream.Close() End Using 'sw End Using 'cryptStream 'メモリーストリームから暗号化後のバイト配列を取得します。 Dim bRet As Byte() = memStream.ToArray() memStream.Close() 'Base64で文字列に変更し返します。 Return System.Convert.ToBase64String(bRet) End Using 'memStream End Function ''' <summary> ''' 文字列を復号化します。 ''' </summary> ''' <param name="value">復号化する文字列</param> ''' <param name="key">暗号キー</param> ''' <returns>復号化後の文字列</returns> ''' <remarks></remarks> Public Shared Function Decrypt(ByVal value As String, ByVal key As String) As String 'キーをバイト型配にし、8バイトにリサイズします。 Dim bKey As Byte() = System.Text.Encoding.UTF8.GetBytes(key) Array.Resize(bKey, 8) 'DES暗号化プロバイダオブジェクトを作成します。 Dim des As New System.Security.Cryptography.DESCryptoServiceProvider des.Key = bKey des.IV = bKey 'Base64で文字列をバイト配列に戻します。 Dim bValue As Byte() = System.Convert.FromBase64String(value) '暗号化されたデータを読み込むためのメモリーストリームオブジェクトを作成します。 Using memStream As New System.IO.MemoryStream(bValue) 'データ ストリームを暗号変換にリンクするストリームを定義します。 Using cryptStream As New System.Security.Cryptography.CryptoStream( _ memStream, des.CreateDecryptor, _ System.Security.Cryptography.CryptoStreamMode.Read) '読み込むためのストリームリーダーオブジェクトを作成します。 Using sr As New System.IO.StreamReader(cryptStream, _ System.Text.Encoding.UTF8) 'メモリーストリームから復号化後のバイト配列を取得します。 Dim vRet As String = sr.ReadLine 'ストリームを閉じます。 sr.Close() cryptStream.Close() memStream.Close() Return vRet End Using End Using 'cryptStream End Using 'memStream End Function
他にもSystem.Security.Cryptography名前空間には暗号化複号化を行うクラスとして、以下のものがあります。いずれも使い方はほとんど同じです。
- DESCryptoServiceProvider
- RC2CryptoServiceProvider
- RijndaelManaged
- TripleDESCryptoServiceProvider
0 件のコメント:
コメントを投稿