Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何将加密音频文件解密到剪贴板中_Vb.net_Audio_Encryption - Fatal编程技术网

Vb.net 如何将加密音频文件解密到剪贴板中

Vb.net 如何将加密音频文件解密到剪贴板中,vb.net,audio,encryption,Vb.net,Audio,Encryption,我想知道是否有可能将加密音频文件解密到剪贴板(而不是新文件),然后播放。我曾尝试编写一些代码,但由于我对visual basic的了解不足,出现了一个错误。我在谷歌上搜索过,但似乎关于加密音频文件的信息并不多。有人能帮我吗? 我发布代码: Imports System.Security.Cryptography Imports System.IO Imports System.Text Public Class Form1 Private Sub Button2_Click(ByVal se

我想知道是否有可能将加密音频文件解密到剪贴板(而不是新文件),然后播放。我曾尝试编写一些代码,但由于我对visual basic的了解不足,出现了一个错误。我在谷歌上搜索过,但似乎关于加密音频文件的信息并不多。有人能帮我吗? 我发布代码:

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

这更好,但是。。。如果我想播放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

你不也需要加密密钥吗,还是我错了?另外,您的
GetStreamAsByteArray()
方法完全无用,只会消耗内存-直接使用
MemoryStream.ToArray()
。是的,谢谢。你是对的!