2016-05-06 8 views
1

私のAndroidアプリケーションでは、URL_SAFENO_WRAPというフラグを使用してjava.util.Base64エンコーディングとデコードを使用しています。Base64の安全なエンコーディングとデコードAndroidとC#

しかし、HttpServerUtility.UrlTokenEncodeを使用してC#アプリケーションでデコードしようとすると、私はnullに戻ります。この状態では、エンコードされた文字列をAndroidアプリケーションでデコードすることもできません。

私は何が欠けていますか? URL_SAFEフラグは、Base64文字列に+,/、余分な埋め込みがないことを確認していませんか? UrlTokenEncodeはどのようにBase64値を受け入れていませんか?

I was using this post as reference, for anyone who is interested.

答えて

2

UrlTokenEncode私はstringなくUrlTokenを渡したのでnullを返しました。

URL_SAFENO_WRAP Androidでの両方のエンコード/デコードのBase64フラグは、私のC#アプリケーションをurl_safe方式でデコード/エンコードするように変更しました。

public string UrlEncode(string str) 
    { 
     if (str == null || str == "") 
     { 
      return null; 
     } 

     byte[] bytesToEncode = System.Text.UTF8Encoding.UTF8.GetBytes(str); 
     String returnVal = System.Convert.ToBase64String(bytesToEncode); 

     return returnVal.TrimEnd('=').Replace('+', '-').Replace('/', '_'); 
    } 

    public string UrlDecode(string str) 
    { 
     if (str == null || str == "") 
     { 
      return null; 
     } 

     str.Replace('-', '+'); 
     str.Replace('_', '/'); 

     int paddings = str.Length % 4; 
     if (paddings > 0) 
     { 
      str += new string('=', 4 - paddings); 
     } 

     byte[] encodedDataAsBytes = System.Convert.FromBase64String(str); 
     string returnVal = System.Text.UTF8Encoding.UTF8.GetString(encodedDataAsBytes); 
     return returnVal; 
    } 
関連する問題