Я создал методы дешифрования шифрования для шифрования изображений и видео.Я частично шифрую видео, если быть точным, 1 МБ.Более сложный метод расшифровки может занять много времени, чтобы расшифровать контент на устройстве Android.Однако img_decrypt не займет много времени.Не уверен, почему они это делают.
вот тот. Этот можно расшифровать полностью, зашифровывает видео или изображения.Расшифровывает полные изображения в мс, но не работает для дешифрования частично зашифрованных видео.
public void img_decrypt(InputStream in, OutputStream out) {
try {
// Bytes read from in will be decrypted
in = new CipherInputStream(in, dcipher);
// Read in the decrypted bytes and write the cleartext to out
int numRead = 0;
while ((numRead = in.read(buf)) >= 0 ) {
out.write(buf, 0, numRead);
}
out.close();
} catch (java.io.IOException e) {
}
}
А вот и другое.Это займет вечность, чтобы бежать.Будет расшифровывать полностью зашифрованные изображения или частично зашифрованные видео.
public void decrypt(InputStream in, OutputStream out) {
try {
// Bytes written to out will be decrypted
AppendableOutputStream out_append = new AppendableOutputStream(out);
System.out.println(ecipher.getOutputSize(1024*1024));
OutputStream out_d = new CipherOutputStream(out_append, dcipher);
// Read in the decrypted bytes and write the cleartext to out
int numRead = 0;
int count = 0;
int max = 1024;
boolean out_d_closed = false;
while ((numRead = in.read(buf, 0, max)) > 0) {
count += numRead;
if(count <= ecipher.getOutputSize(1024*1024)){
out_d.write(buf, 0, numRead);
out_d_closed = false;
// last encryption pass, close buffer and fix max
if(count == ecipher.getOutputSize(1024*1024)){
// fix reading 1k in case max was decreased
max = 1024;
out_d.close();
out_d_closed = true;
}
// if next read will go over a meg, read less than 1k
else if(count + max > ecipher.getOutputSize(1024*1024))
max = ecipher.getOutputSize(1024*1024) - count;
}
// past the first meg, don't decrypt
else{
out.write(buf, 0, numRead);
}
}
if(!out_d_closed){
out_d.close();
}
out.close();
} catch (java.io.IOException e) {
e.printStackTrace();
}
}
Поскольку метод decrypt () занимает долго SOOOOOO для расшифровки файла размером 100 КБ, устройство запрашивает прерывание или ожидание.
ЕслиЯ использую img_decrypt (), он работает совсем не вовремя.Что для меня не имеет смысла, они делают то же самое.
Я пытаюсь использовать decrypt () для расшифровки первого МБ видео.
На компьютере все работает нормально.
Любые мысли могут быть полезны.
Оба метода работают для дешифрования полностью зашифрованного файла, хотя decrypt () занимает слишком много времени.
Еще одна вещь.decrypt () расшифровывает данные при записи.img_decrypt () расшифровывает данные на чтение.Не знаю, повлияет ли это на что-либо.
Спасибо