Szyfrowanie danych

0

Posiadam sporą ilość plików, które powinny być zaszyfrowane. Obecnie posiadam zaszyfrowane pliki na dysku, w folderze z aplikacją i jeśli jakiś potrzebuje w programie odszyfrowywuje konkretny i umieszczam go w folderze temp pobranym z System.getProperty("java.io.tmpdir") i gdy nie jest już potrzebny czyszcze folder. Zauważyłem jednak, że na niektóych komputerach występuje problem (z utworzeniem ukrytego katalogu lub z umieszczenim tam odszyfrowanego pliku. Może chodzi o to, że na niektórych komputerach nie mam uprawnień do tworzenia katalogu lub usuwanie plików (Miałem tak u siebie gdy program zainstalowałem w ProgramFiles)? W jaki najprostszy sposób mógłbym rozwiązać swój problem? Moze we właściwościach pliku jar dodać uprawnienia do tworzenia/ edycji plików dla wszystkich użytkowników lub w programie instalacyjnym aplikacji zaznaczyć opcję aby uruchamiał jar z uprawnieniami administratora? Na win 8, win 7 aplikacja działa, problem jest na XP. Liczę na pomoc.

0

Ale właściwie po co zapisujesz ten plik na dysku? Nie możesz go sobie trzymać w pamięci po prostu?

0

Mam w aplikacji EmbededMediaPlayer z biblioteki vlcj, który odtwarza mi filmiki oraz obrazki (które powinny być zaszyfrowane). MediaPlayer do odtwarzania potrzebuje scieżkę do pliku w postaci Stringa, dlatego odszyfrowywuje potrzebny plik, zapisuje w folderze temp i wskazuje na niego utworzoną ścieżką. Czy da się to zrobić bez zapisywania na dysku? Z tego co widzę ByteArrayOutputStream zapisuje tablicę byte'ów do pamięci ale jak z tego wyciągnąć Stringa ze ścieżką? Metoda która przygotowywuje media:

/**
     * Prepare a new media item for play-back, but do not begin playing.
     * <p>
     * When playing files, depending on the run-time Operating System it may be necessary
     * to pass a URL here (beginning with "file://") rather than a local file path.
     *
     * @param mrl media resource locator
     * @param mediaOptions zero or more media item options
     * @return true if the media item was created; false otherwise
     */
    boolean prepareMedia(String mrl, String... mediaOptions);

Będę wdzięczny za wszelką pomoc.

1

Rzuciłem okiem na dokumentacje do vlcj i da się trochę na okrętkę to zobić ;]
https://wiki.videolan.org/Media_resource_locator/
Z tego wynika że można teoretycznie wrzucić tam urla np. z http, więc mógłbyś w ten sposób przesyłać dane, bezpośrednio z pamięci, bez tworzenia plików. Ale może to tylko zbędna komplikacja ;)

0

Czyli rozumiem, że zapisać byte'y za pomocą ByteOutputStream a potem pobrać jakos URL i wykorzystać do w metodzie prepareMedia()? Pytam, ponieważ nie zapisywałem jeszcze danych do pamięci.

1

Nie ma czegoś takiego jak "pobrać jakoś URL" dla obiektów w pamięci :) Najprościej byłoby otworzyć sobie socket i pisać nim na jakiś port dane a jako mrl podać

udp://@:portnumber

albo

tcp://@:portnumber

gdzie portnumber to numer portu na który wysyłasz dane.

0

Ok dzięki spróbuję się z tym pobawić.

A czy sposób z Socketami jest uniwersalny, tzn czy będzie działał tak samo na wszystkich wersjach Windowsa (XP, Vista, 7, 8)? Nie miałem jeszcze zbyt dużego doświadczenia z Socketami, dlatego pytam.

0

Tak, będzie działać zawsze :) No chyba że chcesz to odpalić na jakiejś maszynie która nie ma żadnego interfejsu sieciowego, ale wiem gdzie byś taką znalazł ;]

0

Ok, dzięki za pomoc, jeśli będę miał jakieś problemy to będę pisał ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1