Re: [問題] 看不懂訊息~~請大大幫忙解答

看板java作者 (星風狂翼)時間18年前 (2007/12/07 18:59), 編輯推噓5(504)
留言9則, 2人參與, 最新討論串6/7 (看更多)
※ 引述《superlubu (叔叔你人真好)》之銘言: : : 推 icemask:大大~~我剛剛有測出來了~~加密之後會117byte->128byte 12/05 20:28 : : → icemask:這樣解密用128byte就可以了~~可是解出來的檔還是亂碼~~~ 12/05 20:29 : : → icemask:是哪邊有錯嗎 12/05 20:30 : : 推 icemask:http://www.cyut.edu.tw/~s9327122/RSA.txt 12/05 20:42 : : → icemask:這是我改過的程式~~請你看一下 12/05 20:42 : 我之所以不推薦你這樣的寫法,是因為下面兩個理由: : 1. InputStream.read(byte[]) 並不是你把 buffer 設成 117,它就一定能讀進 : 117 個 bytes,到頭來你必需每次都先確認它讀進了多少。 : 2. 就算你每次都可以讀得到 117 bytes 進去,但讀到最後一組時必定會出現問 : 題,因為絕不會剛好每個檔案的 size 都是 117 的倍數。 : 以上兩點,在加密時也好,在解密亦好,也必定會發生,於是加密時把不必要的東西 : 加密了,解密時也把不必要的東西解密了,亂碼的出現幾乎是必然的。 : 除非你真的很想自己處理這一切東西,不然我仍然不建議棄現有的 Cipher IOStream : 而花無謂的精力在這一方面。 ----------------------------------------------------------------------------- FileOutputStream fout=new FileOutputStream(fon); CipherOutputStream out=new CipherOutputStream(fout,cipher); byte[] buffer=new byte[117]; int length; while((length=in.read(buffer))!=-1){ out.write(buffer,0,length); } 我之前有寫這樣過,可是檔案無法輸出,所以我才會用doFinal()這個方法 還是我寫的方法有錯,請大大指教 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.214.70

12/07 19:58, , 1F
都說了先 flush CipherOutputStream 再 flush FileOutpu
12/07 19:58, 1F

12/07 20:00, , 2F
十個出現這種空白檔的人九個都是因為以為只要 flush
12/07 20:00, 2F

12/07 20:01, , 3F
FileOutputStream 的
12/07 20:01, 3F

12/08 00:52, , 4F
大大能教一下如何寫嗎~~因為我看書上就是這樣寫
12/08 00:52, 4F

12/08 00:54, , 5F
真的不知道大大說的寫法是什麼
12/08 00:54, 5F

12/08 06:32, , 6F
你連 flush 是什麼都不知道? 它只是個 method 啊
12/08 06:32, 6F

12/08 11:44, , 7F
......~~~就真的不知道阿
12/08 11:44, 7F

12/08 11:55, , 8F
應該這麼說好了~~~是看不懂cos.flush之後
12/08 11:55, 8F

12/08 11:56, , 9F
在fos.flush()~~cos裡不是要有cos(fos,cipher)嗎
12/08 11:56, 9F
文章代碼(AID): #17MIU5gy (java)
討論串 (同標題文章)
文章代碼(AID): #17MIU5gy (java)