2016-02-16 3 views
0

Мне было интересно, можно ли расшифровать в буфер обмена (а не в новый файл) зашифрованный аудиофайл и затем воспроизвести его. Я попытался написать код, но есть ошибка, из-за моего низкого знания визуального базового. Я искал в 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 
+0

Вам тоже не нужен ключ шифрования, или я не прав? Кроме того, ваш метод GetStreamAsByteArray() '_completely_ бесполезен и просто ест память - используйте' MemoryStream.ToArray() 'напрямую. –

+0

Да, спасибо. Ты прав! – Luciano

ответ

0

Это лучше, но ... если я хочу, чтобы воспроизвести звуковой файл mp3 ... нет шансов?

Clipboard.Clear()   'clear the clipboard 
    Clipboard.SetAudio(mp3Bytes) 'set the mp3 audio file bytes to the clipboard 
    If Clipboard.ContainsAudio Then 
     Dim btsFromClipboard() As Byte = {} 
     Using cbstrm As Stream = Clipboard.GetAudioStream 
      ReDim btsFromClipboard(CInt(cbstrm.Length) - 1) 
      cbstrm.Read(btsFromClipboard, 0, CInt(cbstrm.Length)) 
     End Using 

     'Now I would like to play the mp3 audio file (just decrypted) by getting the audio file bytes from the clipboard 

     AxWindowsMediaPlayer1.Ctlcontrols.play() ' ???? I don't know how to go on 

    End If 
Смежные вопросы