有些人不想由URL暴露一些訊息,除了可以使用URL Rewrite之外,其實簡便一點的方法還有使用編碼or加密來達到偽裝的目的。使用Base64的原因是因為他的編碼不會有難以接受的特殊字元(註1),你也可以用其他的編碼or加密算法替代(註2)。其實這邊已經有一串很精彩的討論,我只是覺得其實如果要用Base64的話還可以更精簡成這樣:
01
public static string EncodeString(string toEncode)
02
{
03
try
04
{
05
byte[] toEncodeAsBytes = Encoding.UTF8.GetBytes(toEncode);
06
return Convert.ToBase64String(toEncodeAsBytes);
07
}
08
catch (Exception ex)
09
{
10
//do your error handling here
11
}
12
}
13
14 public static string DecodeString(string toDecrypt)
15
{
16
try
17
{
18
byte[] encodedDataAsBytes = Convert.FromBase64String(toDecrypt.Replace(" ", "+"));
19
return Encoding.UTF8.GetString(encodedDataAsBytes);
20
}
21
catch (Exception ex)
22
{
23
//do your error handling here
24
}
25
}
public static string EncodeString(string toEncode)02
{03
try04
{05
byte[] toEncodeAsBytes = Encoding.UTF8.GetBytes(toEncode);06
return Convert.ToBase64String(toEncodeAsBytes);07
}08
catch (Exception ex)09
{10
//do your error handling here11
}12
}13

14 public static string DecodeString(string toDecrypt)
15
{16
try17
{18
byte[] encodedDataAsBytes = Convert.FromBase64String(toDecrypt.Replace(" ", "+"));19
return Encoding.UTF8.GetString(encodedDataAsBytes);20
}21
catch (Exception ex)22
{23
//do your error handling here24
}25
}註1:Base64編碼過後的字串有可能會包含加號(+),而加號會自動被瀏覽器轉換成空格(" "),所以反編碼前要先把空格轉回加號(第18行)才不會造成解碼失敗。
註2:如果你要加上額外的加密演算法(例如3DES, TDES),建議用Base64包在最外層,也就是先加密、再用Base64編碼。