2013-03-04 68 views

回答

1

使用CipherOutputStreamCipherInputStream用密碼和你的FileOutputStream中/的FileInputStream。我會建議像構造函數調用Cipher.getInstance("AES/CBC/PKCS5Padding");。如果你想使用密碼,請確保你使用了一個好的密鑰派生機制(查找基於密碼的加密)。對於多個文件,請爲IV使用NONCE(請參閱wikipedia)。

總是在編碼/解碼字符串時指定字符編碼,否則當平臺編碼與上一個不同時會遇到麻煩。換句話說,不要使用String.getBytes(),而是使用String.getBytes(Charset.forName("UTF-8"))

爲了使其更安全,請添加安全校驗和(MAC或HMAC),並且不要忘記在計算開始時添加NONCE。

+0

這是我在這裏的代碼,我使用CipherOutputStream但文件不加密,而寫入SDCARD InputStream input = new BufferedInputStream(url.openStream(),8192); \t File mediaDir = new File(「/ sdcard/download/media」); (!mediaDir.exists()){ \t mediaDir.mkdir(); \t}文件resolveMeSDCard =新文件(「/ sdcard/download/media/downloadedfile.jpg」); \t resolveMeSDCard.createNewFile(); \t OutputStream output = new FileOutputStream(resolveMeSDCard); – 2013-03-04 09:08:31