Я использую Rijndael (как алгоритм AES) для шифрования. Я зашифровываю значения (свойства объектов) и сериализую объект для xml и отправки xml получателю через веб-сервис. Я хочу передать зашифрованный симметричный ключ, который я использовал для шифрования данных. Но какой ключ я должен передать?
Мой алгоритм расшифровки выглядит следующим образом (vb.net):
Public Function Encrypt(ByVal stringToEncrypt As String) As String
Dim textConverter As New ASCIIEncoding()
Dim myRijndael As New RijndaelManaged()
Dim encrypted() As Byte
Dim stringToEncryptAsByte() As Byte
Dim encryptedAsString As String
Dim key() As Byte
Dim IV() As Byte
' Set symetric key size og chiper mode
myRijndael.Mode = CipherMode.CBC
myRijndael.KeySize = 128
' Create a new key and initialization vector.
myRijndael.GenerateKey()
myRijndael.GenerateIV()
' Get the key and IV.
key = myRijndael.Key
IV = myRijndael.IV
' Get an encryptor.
Dim encryptor As ICryptoTransform = myRijndael.CreateEncryptor(key, IV)
' Encrypt the data.
Dim msEncrypt As New MemoryStream()
Dim csEncrypt As New CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)
' Convert the data to a byte array.
stringToEncryptAsByte = textConverter.GetBytes(stringToEncrypt)
' Write all data to the crypto stream and flush it.
csEncrypt.Write(stringToEncryptAsByte, 0, stringToEncryptAsByte.Length)
csEncrypt.FlushFinalBlock()
' Get encrypted array of bytes.
encrypted = msEncrypt.ToArray()
encryptedAsString = Convert.ToBase64String(encrypted)
Return encryptedAsString
End Function
Если я хочу расшифровать зашифрованную строку, я должен использовать и ключ, и IV, но я думаю, что должен передать только значение ключа. Должен ли я сделать это по-другому или что я должен пройти?
Моя спецификация говорит, что значения должны быть зашифрованы с использованием AES и 128-битного ключа.