AnyChat技术支持论坛

标题: 使用加解密接口无法实现视频数据的解密 [打印本页]

作者: g0850531    时间: 2015-2-2 15:02
标题: 使用加解密接口无法实现视频数据的解密
你好,我使用V5.2客户端的c#版demo,开启加解密功能,可以实现本地音视频数据的加密,对于接收方,可以对加密音频数据解密,但对加密视频数据并未调用该函数无法实现解密,求解~
加解密代码如下
  1. #region 数据加解密
  2. private void Data_EncDec(int dwUserId, int dwFlags, IntPtr lpInBuf, int dwInSize,
  3. IntPtr lpOutBuf, ref int lpOutSize, int lpUserValue)
  4. {
  5. Console.WriteLine(dwFlags);

  6. if ((dwFlags & AnyChatCoreSDK.BRAC_DATAENCDEC_FLAGS_ENCMODE) != 0)
  7. {
  8. if ((dwFlags & AnyChatCoreSDK.BRAC_DATAENCDEC_FLAGS_AUDIO) != 0)
  9. {
  10. //音频
  11. string MingAudio_InBufData = Marshal.PtrToStringUni(lpInBuf);//格式转换
  12. byte[] MingAudio_Buffer = Encoding.Unicode.GetBytes(MingAudio_InBufData);

  13. //加密算法
  14. byte[] outarry = MingAudio_Buffer;

  15. Marshal.Copy(outarry, 0, lpOutBuf, outarry.Length);
  16. lpOutSize = outarry.Length;
  17. }
  18. else if ((dwFlags & AnyChatCoreSDK.BRAC_DATAENCDEC_FLAGS_VIDEO) != 0)
  19. {
  20. //视频
  21. string MingVideo_InBufData = Marshal.PtrToStringUni(lpInBuf);//格式转换
  22. byte[] MingVideo_Buffer = Encoding.Unicode.GetBytes(MingVideo_InBufData);

  23. //加密算法
  24. byte[] outarry = MingVideo_Buffer;

  25. Marshal.Copy(outarry, 0, lpOutBuf, outarry.Length);
  26. lpOutSize = outarry.Length;
  27. }
  28. }
  29. else if ((dwFlags & AnyChatCoreSDK.BRAC_DATAENCDEC_FLAGS_DECMODE) != 0)
  30. {
  31. if ((dwFlags & AnyChatCoreSDK.BRAC_DATAENCDEC_FLAGS_AUDIO) != 0)
  32. {
  33. //音频
  34. string MiAudio_InBufData = Marshal.PtrToStringUni(lpInBuf);//格式转换
  35. byte[] MiAudio_Buffer = Encoding.Unicode.GetBytes(MiAudio_InBufData);

  36. //解密算法
  37. byte[] outarry = MiAudio_Buffer;

  38. Marshal.Copy(outarry, 0, lpOutBuf, outarry.Length);
  39. lpOutSize = outarry.Length;
  40. }
  41. else if ((dwFlags & AnyChatCoreSDK.BRAC_DATAENCDEC_FLAGS_VIDEO) != 0)
  42. {
  43. //视频
  44. string MiVideo_InBufData = Marshal.PtrToStringUni(lpInBuf);//格式转换
  45. byte[] MiVideo_Buffer = Encoding.Unicode.GetBytes(MiVideo_InBufData);

  46. //解密算法
  47. byte[] outarry = MiVideo_Buffer;

  48. Marshal.Copy(outarry, 0, lpOutBuf, outarry.Length);
  49. lpOutSize = outarry.Length;
  50. }
  51. }
  52. }
  53. #endregion
复制代码

作者: admin    时间: 2015-2-2 15:08
您好,您的算法有问题,视频流是二进制格式,中间可能包含'\0',而您的算法,只适合对字符串的处理,遇到'\0'就认为字符流结束了。
作者: 廖斌    时间: 2015-2-2 15:12
还要注意回调函数返回值要是0,不能是其他值。参考
http://bbs.anychat.cn/forum.php? ... hlight=%BC%D3%C3%DC
作者: g0850531    时间: 2015-2-2 15:46
admin 发表于 2015-2-2 15:08
您好,您的算法有问题,视频流是二进制格式,中间可能包含'\0',而您的算法,只适合对字符串的处理,遇到'\ ...

谢谢,知道问题出在哪了
作者: g0850531    时间: 2015-2-2 15:46
廖斌 发表于 2015-2-2 15:12
还要注意回调函数返回值要是0,不能是其他值。参考
http://bbs.anychat.cn/forum.php?mod=viewthread&tid= ...

嗯嗯,谢谢提醒




欢迎光临 AnyChat技术支持论坛 (http://bbs.anychat.cn/) Powered by Discuz! X3