У меня есть куча видеофайлов, которые нужно поместить на планшеты Android в качестве данных для нашего приложения. Поскольку нам не нужен легкий доступ, мы решили зашифровать видео. Я беру безопасность через подход безвестности. Я начал с шифрования всего видео и дешифрования его перед игрой, но быстро стало очевидно, что загрузка видео - большой убийца верности. Исправлена работа пользователя и поток приложения.Шифрование частичного файла
Я думал, может быть, я могу зашифровать первый МБ видео, учитывая, что все наши видеоролики превышают 1 МБ. Если вор обманывает видео, по крайней мере, это не все, и это бесполезно.
Bellow - это код, который шифрует и дешифрует файлы. Он работает, за исключением видео, потому что я пытаюсь исправить две части файла вместе. Зашифрованный файл кажется прекрасным. Дешифрованный файл отключен в одном месте. Я решил это, но проверил их через тест diff.
public void encrypt(InputStream in, OutputStream out) {
try {
// Bytes written to out will be encrypted
OutputStream out_c = new CipherOutputStream(out, ecipher);
// Read in the cleartext bytes and write to out to encrypt
int numRead = 0;
int count = 0;
boolean first = true;
while ((numRead = in.read(buf)) >= 0) {
if(count <= 1048576){
count += numRead;
out_c.write(buf, 0, numRead);
}else{
out.write(buf, 0, numRead);
}
}
out.close();
out_c.close();
} catch (java.io.IOException e) {
}
}
// Movies encrypt only 1 MB.
public void decrypt(InputStream in, OutputStream out) {
try {
// Bytes read from in will be decrypted
InputStream in_c = new CipherInputStream(in, dcipher);
// Read in the decrypted bytes and write the cleartext to out
int numRead = 0;
int count = 0;
while ((numRead = in_c.read(buf)) >= 0 && count <= 1048576) {
count += numRead;
out.write(buf, 0, numRead);
}
//in.skip(count); This removed 1MB from the final file. No need to skip.
while((numRead = in.read(buf)) >= 0){
out.write(buf,0,numRead);
}
out.close();
} catch (java.io.IOException e) {
}
}
Мне было интересно, может ли кто-нибудь обнаружить проблему с помощью шифрования или дешифрования. Я знаю, что это не идеальное решение, но оно работает в нашей ситуации.
спасибо.
Я не уверен, что понял вашу проблему. Код, который вы предоставили, работает с некоторыми файлами, но не с видеофайлами? С каким видом видео (mpeg?) Это не сработало? он работал, если вы использовали программу со всем файлом, а не 1 мега? – woliveirajr
Вы задаете неправильный вопрос. Вопрос должен быть: Как остановить андроиды пользователей от копирования моих видео? Это то, что для [DRM api] (http://developer.android.com/reference/android/drm/package-summary.html). – mikerobi