gpt4 book ai didi

c# - MediaStreamSource 和 CryptoStream

转载 作者:行者123 更新时间:2023-11-30 18:41:29 24 4
gpt4 key购买 nike

场景:我们有一个将要离线发布的 silverlight 5 OOB 应用程序 (DVD ROM)。此应用程序用作某些教育内容的媒体播放器。为了保护 DVD ROM 附带的视频文件,我决定用每个用户唯一的 key 加密视频文件,运送内容并在需要播放时解密。

问题:如何逐步动态解密媒体?我不想因为内存和性能问题而一次解密整个文件。 MediaElement 支持流类型的来源,但是当我使用 CryptoStream 解密视频文件并将其传递给 MediaElement.SetSource 方法时,出现以下异常被抛出:

{System.Windows.Media.DrmException: 3121 3121 An error has occurred.
at MS.Internal.XcpImports.MethodEx(IntPtr ptr, String name, CValue[] cvData)
at MS.Internal.XcpImports.MediaElement_SetStreamSource(MediaElement element, Stream stream)
at System.Windows.Controls.MediaElement.SetSource(Stream stream)
at SilverlightApplication4.MainPage.button1_Click(Object sender, RoutedEventArgs e)
at System.Windows.Controls.Primitives.ButtonBase.OnClick()
at System.Windows.Controls.Button.OnClick()
at System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
at System.Windows.Controls.Control.OnMouseLeftButtonUp(Control ctrl, EventArgs e)
at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName, UInt32 flags)}

我使用 AES 算法是用于加密操作的 AesManaged 类。

提前致谢。

最佳答案

您是否将 MediaElement.SetSource 设置为加密流或包装它的流?

FileStream stream = new FileStream(“mymedia.avi”, FileMode.Open,FileAccess.Read);
CryptoStream cs = new CryptoStream(stream, alg.CreateDecryptor(), CryptoStreamMode.Read);
StreamReader reader = new StreamReader(cs);

正如有人已经指出的那样,不要将 key 与产品一起存储。找到存储在二进制文件中的 key 真的很容易。

关于c# - MediaStreamSource 和 CryptoStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6722999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com