现在需要向另一个网页A中传递一个参数,参数中包含一个页面B地址,A做完相关动作后转向B,B链接类似如下:http://192.168.0.8/CWBASE/MC/MCMainFace/MCMainFace.asp?MCID=003&DWINFO=1001001|集团股份有限公司(本部)
请问如何把“http://192.168.0.8/CWBASE/MC/MCMainFace/MCMainFace.asp?MCID=003&DWINFO=1001001|集团股份有限公司(本部)”在c#中做base64编码,试了几种方法,都不能解码,全英文路径没问题。

解决方案 »

  1.   

        /// <summary>
        /// 实现Base64加密解密
        /// </summary>
        public sealed class Base64
        {
            /// <summary>
            /// Base64加密
            /// </summary>
            /// <param name="codeName">加密采用的编码方式</param>
            /// <param name="source">待加密的明文</param>
            /// <returns></returns>
            public static string EncodeBase64(Encoding code_type, string source)
            {
                string encode = "";
                byte[] bytes = code_type.GetBytes(source);
                try
                {
                    encode = Convert.ToBase64String(bytes);
                }
                catch
                {
                    encode = source;
                }
                return encode;
            }        /// <summary>
            /// Base64加密,采用utf8编码方式加密
            /// </summary>
            /// <param name="source">待加密的明文</param>
            /// <returns>加密后的字符串</returns>
            public static string EncodeBase64(string source)
            {
                return EncodeBase64(Encoding.UTF8, source);
            }        /// <summary>
            /// Base64解密
            /// </summary>
            /// <param name="codeName">解密采用的编码方式,注意和加密时采用的方式一致</param>
            /// <param name="result">待解密的密文</param>
            /// <returns>解密后的字符串</returns>
            public static string DecodeBase64(Encoding encode, string result)
            {
                string decode = "";
                byte[] bytes = Convert.FromBase64String(result);
                try
                {
                    decode = encode.GetString(bytes);
                }
                catch
                {
                    decode = result;
                }
                return decode;
            }        /// <summary>
            /// Base64解密,采用utf8编码方式解密
            /// </summary>
            /// <param name="result">待解密的密文</param>
            /// <returns>解密后的字符串</returns>
            public static string DecodeBase64(string result)
            {
                return DecodeBase64(Encoding.UTF8, result);
            }
        }
      

  2.   

    谢谢楼上
    这我已经试过,不行的。
    对方是asp页面,且里面只能使用vbscript脚本解码:
    Function Base64Decode(ByVal base64String)
      'rfc1521
      '1999 Antonin Foller, Motobit Software, http://Motobit.cz
      Const Base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
      Dim dataLength, sOut, groupBegin
      
      'remove white spaces, If any
      base64String = Replace(base64String, vbCrLf, "")
      base64String = Replace(base64String, vbTab, "")
      base64String = Replace(base64String, " ", "")
      
      'The source must consists from groups with Len of 4 chars
      dataLength = Len(base64String)
      If dataLength Mod 4 <> 0 Then
        Err.Raise 1, "Base64Decode", "Bad Base64 string."
        Exit Function
      End If  
      ' Now decode each group:
      For groupBegin = 1 To dataLength Step 4
        Dim numDataBytes, CharCounter, thisChar, thisData, nGroup, pOut
        ' Each data group encodes up To 3 actual bytes.
        numDataBytes = 3
        nGroup = 0    For CharCounter = 0 To 3
          ' Convert each character into 6 bits of data, And add it To
          ' an integer For temporary storage.  If a character is a '=', there
          ' is one fewer data byte.  (There can only be a maximum of 2 '=' In
          ' the whole string.)      thisChar = Mid(base64String, groupBegin + CharCounter, 1)      If thisChar = "=" Then
            numDataBytes = numDataBytes - 1
            thisData = 0
          Else
            thisData = InStr(1, Base64, thisChar, vbBinaryCompare) - 1
          End If
          If thisData = -1 Then
            Err.Raise 2, "Base64Decode", "Bad character In Base64 string."
            Exit Function
          End If      nGroup = 64 * nGroup + thisData
        Next
        
        'Hex splits the long To 6 groups with 4 bits
        nGroup = Hex(nGroup)
        
        'Add leading zeros
        nGroup = String(6 - Len(nGroup), "0") & nGroup
        
        'Convert the 3 byte hex integer (6 chars) To 3 characters
        pOut = Chr(CByte("&H" & Mid(nGroup, 1, 2))) + _
          Chr(CByte("&H" & Mid(nGroup, 3, 2))) + _
          Chr(CByte("&H" & Mid(nGroup, 5, 2)))
        
        'add numDataBytes characters To out string
        sOut = sOut & Left(pOut, numDataBytes)
      Next  Base64Decode = sOut
    End Function
      

  3.   

    看不懂你的代码,uncode的问题吧