我正在嘗試java中的此代碼,因爲android內部也使用java。 我的問題是關於如何破壞(加密)mp4視頻,以便即使某些正文複製了這些視頻,也不會播放。使用Java-通過將隨機字節寫入文件來加密SD卡視頻
我試圖通過添加「hi」來結束該文件的位置來破壞mp4視頻,以至於文件被破壞,vlc播放器無法播放該文件。我可以成功破壞視頻。 VLC不再能夠播放視頻。
解密時,我們正在從該文件中讀取除最後2個字符「hi」以外的內容,並將內容複製到另一個文件中,以檢查我是否可以正確解密。 但問題是解密視頻播放不正常.VLC不報告任何錯誤,但顯示綠色窗口代替視頻,聲音也不會來。 解密文件的大小是正確的,如預期。
我的疑問是,當我正在閱讀mp4文件的數據並複製到其他文件中時,有些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();
}
}
}
數字版權管理系統旨在有效地完成這件事。嘗試查看Android上可用於MP4文件的DRM系統。 –