Java 在读取文件时,建议在运行时替换文件中的字节块

Java 在读取文件时,建议在运行时替换文件中的字节块,java,Java,伙计们。我相信社会人士会认为这是一个相关的问题。我很抱歉,如果没有和mods,请关闭 我正在为一位客户开发一款带有静态内容的视频播放应用程序。我的客户希望我实施一些基本的安全措施,以阻止有人打开已部署的应用程序(适用于Android)并简单地复制MPEG。我的客户已将基本保护作为一项关键要求,他正在支付账单:) 这些文件太大,无法在运行时进行解密,因此我正在考虑以下方法。我欢迎大家提出关于替代方案的想法和建议。我知道支持和反对复制保护计划和通过隐晦实现安全的论点,我建议的方法使用了这些论点,我的

伙计们。我相信社会人士会认为这是一个相关的问题。我很抱歉,如果没有和mods,请关闭

我正在为一位客户开发一款带有静态内容的视频播放应用程序。我的客户希望我实施一些基本的安全措施,以阻止有人打开已部署的应用程序(适用于Android)并简单地复制MPEG。我的客户已将基本保护作为一项关键要求,他正在支付账单:)

这些文件太大,无法在运行时进行解密,因此我正在考虑以下方法。我欢迎大家提出关于替代方案的想法和建议。我知道支持和反对复制保护计划和通过隐晦实现安全的论点,我建议的方法使用了这些论点,我的问题不是“我应该吗?”

从MPG头的某个地方获取一个字节块,比如256。用随机值替换这些字节,这样MPEG就不会播放,而不需要花费大量精力来修复它。将原始256字节存储在其中一个应用位图中,以便位图仍能正确显示。播放视频时,通过字节流将其读入,并在将字节传递到输出流之前将其替换为原始值

总之:

  • 从MPEG的头文件中提取256个字节
  • 将这些字节存储在位图中
  • 将原始字节中的值随机化
  • 在运行时,从位图中读回256字节
  • 使用字节数组缓冲区通过输入流读取MPEG
  • 用原始值替换随机字节
  • 将输入流化为输出流,输出流是视频播放器的输入
  • 我确实认识到至少有两种方法可以克服这一点,反向工程和屏幕抓取,但关键是要防止一般的窃贼不费吹灰之力就简单地复制我的客户内容

    乡亲们


    谢谢

    我建议对整个流使用加密/解密方案:

  • 实时视频流解密是解决这个问题的标准方法。与实际视频解码相比,它的处理开销可以忽略不计。例如,每个玩家都支持加密方案

    虽然使用Java会带来一些限制,例如无法有效地使用各种CPU特定的指令,但您应该能够找到一种不太昂贵的解密算法。我建议在立即拒绝流加密算法之前分析您的应用程序

  • 损坏标题确实会使一些视频文件难以读取,但这绝非不可能。一些文件有冗余信息,其他文件实际上是直接连接的结果,这将使下面的任何段都可读。一些流式视频编解码器实际上插入了足够的元数据,以便每隔几秒钟重建一次流。还有很多视频格式

    换句话说,无法保证从文件开头删除任何数量的字节都会使其无法读取。我还认为,对您的客户施加一系列限制,即他们可以使用的视频格式是不合理的,并且限制了您的应用程序的未来用途


  • 非常感谢。深思熟虑的回答。我必须承认,我已经断然拒绝了流加密,因为我曾经做过一些关于低功耗Android设备的噩梦,但经过再三思考,也考虑了你关于未来有用性的观点,我将做一些基准测试,看看感觉如何。我会等一会儿,看看是否还有其他问题,然后为分数选择一个答案。再次感谢。