Мне было интересно, можно ли расшифровать в буфер обмена (а не в новый файл) зашифрованный аудиофайл и затем воспроизвести его. Я попытался написать код, но есть ошибка, из-за моего низкого знания визуального базового. Я искал в Google, но, похоже, что в зашифрованном аудиофайле имеется не так много информации. Может кто-то мне помочь, пожалуйста? я отправляю код:как расшифровать зашифрованный аудиофайл в буфер обмена
Imports System.Security.Cryptography
Imports System.IO
Imports System.Text
Public Class Form1
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim rij As New RijndaelManaged()
rij.IV = New [Byte]() {2, 23, 35, 83, 7, 35, 28, 34, 94, 25, 45, 2, 73, 26, 27, 78}
Dim pwd As Byte() = New Byte(14) {}
UTF8Encoding.UTF8.GetBytes("123abc").CopyTo(pwd, 0)
'Up to this point is working
My.Computer.Clipboard.Clear()
Dim cs As New CryptoStream(File.OpenRead("C:\Users\User\Desktop\bbb.wav"),
rij.CreateDecryptor(pwd, rij.IV), CryptoStreamMode.Read)
Dim ms As MemoryStream = New MemoryStream()
cs.CopyTo(ms)
GetStreamAsByteArray(ms)
My.Computer.Clipboard.SetAudio(ms)
If My.Computer.Clipboard.ContainsAudio Then
My.Computer.Audio.Play(ms, AudioPlayMode.Background)
End If
End Sub
Private Function GetStreamAsByteArray(ByVal stream As MemoryStream) As Byte()
Dim streamLength As Integer = Convert.ToInt32(stream.Length)
Dim fileData As Byte() = New Byte(streamLength) {}
stream.Read(fileData, 0, streamLength)
stream.Flush()
stream.Close()
Return stream.ToArray()
End Function
End Class
Вам тоже не нужен ключ шифрования, или я не прав? Кроме того, ваш метод GetStreamAsByteArray() '_completely_ бесполезен и просто ест память - используйте' MemoryStream.ToArray() 'напрямую. –
Да, спасибо. Ты прав! – Luciano