關於URLEnCode,URLDeCode,Base64,公鑰私鑰


1、Base64非常適合http、mime協議,所以在一些類似webservice中可以用Base64。

  用法如下:傳出去之前先 Convert.ToBase64String(encryptedBytes)

       接收方則 Convert.FromBase64String(sourceString)

2、公鑰私鑰加密解密,這個網上很多,可以自己去找一下,但如果要和Base64搭配使用,要注意兩點:

  1、Base64的長度是有限制的

  2、建議先對文本做加密處理,在最外面再做Base64處理。

3、URLEnCode,對url進行轉碼,

  3.1、數字和字母不變,中文會變化。
  3.2、空格變為"+"號。
  3.4、其他被編碼成"%"加上他們的ascii的十六進制,規律是這樣的。
4、URLDeCode,對url進行解碼,
  方法一:如果是頁面解碼,其實Request.QueryString()會自動做解碼的動作。無需再寫一遍URLDeCode。
  方法二:如果是其他地方調用,如Andriod調用.net的WebService,則需要做一次解碼的動作。
 
 
最近在做的一個項目遇到類似的情況,.net寫了一個WebService,其他網站調用這個WebService,同時手機端也在調用這個WebService,處理的情況是不一樣的,具體的設計思路如下:
1、網站和手機端調用的方法是不一樣的,網站調用的Webservice不需要做URLDecode,手機端調用的則需要做URLDecode
2、WebService中,針對一個要傳遞的文本先做公鑰加密,然后處理成base64。代碼如下(代碼不貼全,只做一個參考)
        #region 公鑰加密/私鑰解密 (不限長string)

        public static string EncryptWithPublicKey(string sourceString)
        {
            var sourceBytes = Encoding.UTF8.GetBytes(sourceString);
            var encryptedBytes = EncryptWithPublicKey(sourceBytes);
            var encryptedString = Convert.ToBase64String(encryptedBytes);
            return encryptedString;
        }

        public static string DecryptWithPrivateKey(string sourceString)
        {
            var sourceBytes = Convert.FromBase64String(sourceString);
            var decryptedBytes = DecryptWithPrivateKey(sourceBytes);
            var decryptedString = Encoding.UTF8.GetString(decryptedBytes);
            return decryptedString;
        }

        #endregion 公鑰加密/私鑰解密(不限長string)

3、網站調用時直接用var str = Request.QueryString["str"]這個即可,不再需要Decode了, Request.QueryString會自動解碼。

4、Android則需要先DeCode。

5、在3、4的基礎上繼續做Base64處理,私鑰解密等處理,見代碼中的DecryptWithPrivateKey詳情。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM