设为首页收藏本站

AnyChat技术支持论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 2722|回复: 4
打印 上一主题 下一主题

使用加解密接口无法实现视频数据的解密

[复制链接]

2

主题

5

帖子

20

积分

新手上路

Rank: 1

积分
20
跳转到指定楼层
楼主
发表于 2015-2-2 15:02:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
你好,我使用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
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

249

主题

2967

帖子

9079

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9079
沙发
发表于 2015-2-2 15:08:29 | 只看该作者
您好,您的算法有问题,视频流是二进制格式,中间可能包含'\0',而您的算法,只适合对字符串的处理,遇到'\0'就认为字符流结束了。
回复 支持 反对

使用道具 举报

5

主题

1269

帖子

3677

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3677
板凳
发表于 2015-2-2 15:12:10 | 只看该作者
还要注意回调函数返回值要是0,不能是其他值。参考
http://bbs.anychat.cn/forum.php? ... hlight=%BC%D3%C3%DC
回复 支持 反对

使用道具 举报

2

主题

5

帖子

20

积分

新手上路

Rank: 1

积分
20
地板
 楼主| 发表于 2015-2-2 15:46:16 | 只看该作者
admin 发表于 2015-2-2 15:08
您好,您的算法有问题,视频流是二进制格式,中间可能包含'\0',而您的算法,只适合对字符串的处理,遇到'\ ...

谢谢,知道问题出在哪了
回复 支持 反对

使用道具 举报

2

主题

5

帖子

20

积分

新手上路

Rank: 1

积分
20
5#
 楼主| 发表于 2015-2-2 15:46:44 | 只看该作者
廖斌 发表于 2015-2-2 15:12
还要注意回调函数返回值要是0,不能是其他值。参考
http://bbs.anychat.cn/forum.php?mod=viewthread&tid= ...

嗯嗯,谢谢提醒
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|AnyChat ( 粤ICP备13022410号-1 )  

GMT+8, 2024-5-10 18:04 , Processed in 0.148832 second(s), 21 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表