作者superlubu (叔叔你人真好)
看板java
標題Re: [問題] 看不懂訊息~~請大大幫忙解答
時間Thu Dec 6 08:35:54 2007
: 推 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
而花無謂的精力在這一方面。
--
《為了要得到真相,就要向原 PO 伸圖》
那就是伸圖魔人的沒圖沒真相原則,那時我們堅信那就是逼逼死的真實
靠么,圖咧?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 147.8.130.225
推 icemask:那請問一下有什麼好方法呢? 12/06 19:56
→ icemask:我已經想不到有什麼方法了 12/06 19:56
推 superlubu:就用 CipherInputStream/OutputStream 啊 = = 12/06 20:44
推 icemask:不是不想用阿~~只是我用CipherIOStream~~~檔案會是空的阿 12/06 20:52
→ icemask:就是因為這樣~~我才會用cipher.doFinal(); 12/06 20:53
推 superlubu:做 CipherOutputStream 時要先 flush COS 再 flush FOS 12/06 22:11
推 icemask:那是什麼東西~~第一次看到~~能介紹一下嗎 12/06 22:46
推 qrtt1:您要家教費給 superlubu 嗎@@? 12/06 22:52
推 superlubu:COS -> CipherOutputStream, FOS -> FileOutputStream 12/07 05:05
→ superlubu:我只是懶得再打 12/07 05:06