使用Java - 通过将随机字节写入文件

时间:2015-10-13 09:07:07

标签: java android video encryption

我在java中尝试此代码,因为android内部也使用java。 我的问题是如何破坏(加密)mp4视频,这样即使有些人复制这些视频,它也无法播放。

我尝试通过在该文件的结尾位置添加“hi”来破坏mp4视频,以便文件损坏并且vlc播放器无法播放。我能够成功破坏视频。 VLC无法播放视频。

在解密时,我们正在读取该文件中除最后2个字符“hi”之外的内容,并将内容复制到另一个文件中,以检查我是否可以正确解密。 但是问题是去加密的视频没有正常播放.VLC没有报告任何错误,但是显示绿色窗口代替视频,声音也没有出现。 解密后,文件大小正常符合预期。

我怀疑的是,当我读取mp4文件的数据并复制到其他文件时,有些文件属性丢失了,这就是为什么vlc可能无法以它应该播放的方式播放的原因。如果在这种情况下,有没有办法手动将mp4属性设置为解密文件,以便vlc可以正常播放?

我知道有很多密码类可以做到这一点,但遗憾的是加密和解密大小为50mb的视频文件可能太慢了。我不希望我的视频用户延迟超过5秒。我已经尝试过密码,但速度很慢,有时超过30秒,这可能会激怒支付视频费用的真正视频用户。

我只想要一个非常轻量级的安全模型,它可以在一定程度上保护我的视频(如你所知,锁不适合小偷)。

如果有人试过像这样的简单算法,手动破坏mp4视频并在播放前动态解密,请帮助我。除此之外,我们还隐藏文件,更改文件的扩展名,以及将视频拆分为较小的文件,这些文件将在播放前通过我们的应用程序合并。

我试过的代码,粘贴在这里。

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.LinkOption;
import java.nio.file.attribute.BasicFileAttributes;
import java.nio.file.attribute.DosFileAttributes;


public class Testing {
    public static void main(String[] args) {
        File file = new File("e:/ascii.mp4"); //original file path
        File file2 = new File("e:/satish.mp4"); //encrypted file path
        File file3 = new File("e:/satish2.mp4"); //decrypted file path
        try {

            String s = new String(Files.readAllBytes(file.toPath()));
            s = s+"hi"; //appending hi to mp4 content
            FileWriter fw = new FileWriter(file2);
            fw.write(s); //writing mp4 content + hi to encrypted file
            fw.close();

            String s2 = new String(Files.readAllBytes(file2.toPath()));
            s2 = s2.substring(0, s2.length()-1-2); //reading content except last 2 characters.

            FileWriter fw2 = new FileWriter(file3); //decrypted file
            fw2.write(s2); //writing content to decrypted file.
            fw2.close();

        } catch (IOException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

最后,我能够得到解决方案。 我使用了逻辑http://rubular.com/r/lVLXzMllzF,但我在链接本身中指定了很少的修改。我能够在4秒内解密我的52 MB视频。