C# base-64 字符數(shù)組的長度無效

問題場景

公司項目需要加密傳輸,使用 AES 進行加密,加密后轉(zhuǎn)為 base64 字符串進行網(wǎng)絡傳輸。
結果發(fā)現(xiàn)接收后解密錯誤。
發(fā)現(xiàn)是 Convert.FromBase64String(data) 報錯 base-64 字符數(shù)組的長度無效。
查看接收后的字符串中所有的+ 都變成了空格。。。
據(jù)了解, UrlDecode 時,+ 會被解析為空格。而我在將 Request.InputStream 轉(zhuǎn)為字符串后,使用了 UrlDecode

解決

方案一: 傳輸前進行編碼,傳輸后進行解碼

傳輸前使用 UrlEncode 編碼字符串:
postData = HttpUtility.UrlEncode(base64Str);
傳輸后進行解碼:
 byte[] byts = new byte[Request.InputStream.Length];
 Request.InputStream.Read(byts, 0, byts.Length);
 string req = System.Text.Encoding.UTF8.GetString(byts);
 req = HttpUtility.UrlDecode(req);

 return req;

方案二: 傳輸后不進行 Url 解碼

 byte[] byts = new byte[Request.InputStream.Length];
 Request.InputStream.Read(byts, 0, byts.Length);
 string req = System.Text.Encoding.UTF8.GetString(byts);

 return req;
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 0x01 目錄 常見編碼: ASCII編碼 Base64/32/16編碼 shellcode編碼 Quoted-p...
    H0f_9閱讀 13,524評論 2 17
  • CTF中那些腦洞大開的編碼和加密 0x00 前言 正文開始之前先閑扯幾句吧,玩CTF的小伙伴也許會遇到類似這樣的問...
    查無此人asdasd閱讀 6,473評論 0 19
  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學一百閱讀 3,691評論 0 4
  • 我不知道的時候 你為什么也不知道。 我餓了的時候 你為什么在吃早餐。
    留子堯閱讀 467評論 1 2
  • 入門簡書 今天剛剛嘗試了一下簡書的Markdowm功能,感覺甚是強大,因此在這里寫一篇文章分享一下Markdown...
    suporka閱讀 875評論 0 4

友情鏈接更多精彩內(nèi)容