'暗号化用のデータ Dim enc_key() As Byte _ = { &HED, &HB, &H56, &HAF, &H61, &HA2, &H71, &H39, &HE0, &H4B, &HDC, &HC9, &H23, &H69, &H8C, &HBD, &HB9, &H86, &H98, &H28, &HC8, &H3E, &H62, &HA7, &HFA, &H17, &HC1, &H33, &H64, &HBF, &H96, &H24 } Dim enc_iv() As Byte _ = { &H1F, &HDF, &H98, &H0, &H67, &H36, &H7D, &H3B, &HFF, &HC9, &H3B, &H79, &H4D, &HD4, &H81, &H72 } ' 入力文字列をAES暗号化してBase64形式で返すメソッド Function EncryptToBase64(plainText As String, key As Byte(), iv As Byte()) As String ' 入力文字列をバイト型配列に変換 Dim src() As Byte = Encoding.Unicode.GetBytes(plainText) 'WriteLine($"平文のバイト型配列の長さ={src.Length}") ' 出力例:平文のバイト型配列の長さ=60 ' Encryptor(暗号化器)を用意する Using am = New AesManaged() Using encryptor = am.CreateEncryptor(key, iv) ' ファイルを入力とするなら、ここでファイルを開く 'Using inStream = New FileStream(FilePath, ……省略…… ' 出力ストリームを用意する Using outStream = New MemoryStream() ' 暗号化して書き出す Using cs = New CryptoStream(outStream, encryptor, CryptoStreamMode.Write) cs.Write(src, 0, src.Length) ' 入力がファイルなら、inStreamから一定量ずつバイトバッファーに読み込んで ' cse.Writeで書き込む処理を繰り返す(復号のサンプルコードを参照) End Using ' 出力がファイルなら、以上で完了 ' Base64文字列に変換して返す Dim result() As Byte = outStream.ToArray() 'WriteLine($"暗号のバイト型配列の長さ={result.Length}") ' 出力例:暗号のバイト型配列の長さ=64 ' 出力サイズはBlockSize(既定値16バイト)の倍数になる Return Convert.ToBase64String(result) End Using End Using End Using End Function ' 暗号化されたBase64形式の入力文字列をAES復号して平文の文字列を返すメソッド Function DecryptFromBase64(base64Text As String, key As Byte(), iv As Byte()) As String ' Base64文字列をバイト型配列に変換 Dim src() As Byte = Convert.FromBase64String(base64Text) ' Decryptor(復号器)を用意する Using am = New AesManaged() Using decryptor = am.CreateDecryptor(key, iv) ' 入力ストリームを開く Using inStream = New MemoryStream(src, False) ' 出力ストリームを用意する Using outStream = New MemoryStream() ' 復号して一定量ずつ読み出し、それを出力ストリームに書き出す Using cs = New CryptoStream(inStream, decryptor, CryptoStreamMode.Read) Dim buffer(4095) As Byte Dim len As Integer = cs.Read(buffer, 0, 4096) While (len > 0) outStream.Write(buffer, 0, len) len = cs.Read(buffer, 0, 4096) End While End Using ' 出力がファイルなら、以上で完了 ' 文字列に変換して返す Dim result() As Byte = outStream.ToArray() Return Encoding.Unicode.GetString(result) End Using End Using End Using End Using End Function .... 'result暗号化 Dim enc_result As String = EncryptToBase64(result, enc_key, enc_iv) 'result複合化 result = DecryptFromBase64(reg_s, enc_key, enc_iv)