看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VS2012 C++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) Openssl RSA 問題(Question): 因為明文會超過可加密長度 所以我有使用分段加密 當我分別解密完後合起來 我的明文會是正確的 但是就是我的明文後會出現一串亂碼 原因可能是解密完的明文後面沒有結束字元 這是我使用有錯誤嗎 還是本來就會這樣 有什麼辦法改進嗎 餵入的資料(Input): 密文 預期的正確結果(Expected Output): 明文 錯誤結果(Wrong Output): 明文+亂碼 程式碼(Code):(請善用置底文網頁, 記得排版) 不方便公開 補充說明(Supplement): 感謝各位高手大大 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.134.59.89 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1444817723.A.8F5.html
longlongint: 你知道原本字串長度嗎? 10/14 23:45
不能知道明文長度
Sirctal: 你再放入明文的buffer array有事先清乾淨嗎?? 10/14 23:46
有清乾淨
longlongint: 只拿前面就好了 10/14 23:46
longlongint: 哦 覺得2樓比較有道理 10/14 23:47
soso7885: 感覺是你少拿終止符號 10/15 00:32
stupid0319: 或許是沒有拿終止符下去做密文 10/15 02:11
這個我試試看 ※ 編輯: autumnk (220.134.59.89), 10/15/2015 10:29:39 都沒有用,不過我後來在看了一下 如果我的加密長度不需要切割的話 才會有機會出現亂碼 如果要切割的話就比較不會 而且出現亂碼在一開始出現的機率比較高 如果程式跑了一下後 就比較不會出現亂碼 ※ 編輯: autumnk (220.134.59.89), 10/15/2015 11:35:14
stupid0319: 你可以在密文的第一個byte記錄長度啊 10/15 12:27
longlongint: 嗯 機率性出錯 我猜變數沒初始化或取值超出陣列長度 10/15 14:42
我有初始化,想問一下有RSA明文切割後的加解密範例嗎 想參考一下 ※ 編輯: autumnk (220.134.59.89), 10/17/2015 14:07:36 解決了,主要是在明文切割最後一筆時 要在後面一筆尾巴加入結束字元 我之前都是將結束位元加在陣列的最後一個位元 所以才會出錯 感謝各位高手幫我解答 ※ 編輯: autumnk (220.134.59.89), 10/19/2015 15:40:57
Sirctal: 我建議你長度最好是設 length + 1然後最後一個位元補'\0' 10/20 01:26