我正在使用以下加密技術來加密MVC應用程序中的查詢字符串值。URL安全參數
因此該網址會像controller/details/rlSRlRZwzbU%3d
但當PARAM = 2
和KEY = mcbgp23njwmcinu0tij05vc2
該函數返回UhMZc7/MNK8=
。
所以格式化URL將被controller/details/UhMZc7/MNK8%3d
並給予404 Error
public static string Encrypt(string dataStr)
{
Byte[] inputByteArray = Encoding.ASCII.GetBytes(dataStr);
var mstr = new MemoryStream();
string KEY = HttpContext.Current.Session.SessionID;
var key = Encoding.ASCII.GetBytes(KEY.Substring(0, 8));
var des = new DESCryptoServiceProvider();
var cstr = new CryptoStream(mstr, des.CreateEncryptor(key, key), CryptoStreamMode.Write);
cstr.Write(inputByteArray, 0, inputByteArray.Length);
cstr.FlushFinalBlock();
return Convert.ToBase64String(ms.ToArray());
}
我怎樣才能讓這個功能是MVC URL安全嗎?是否有任何其他好的技術來生成網址安全的加密格式?
編輯:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
顯示您的路線映射 –
@CarlosLanderas,添加路線映射 – Billa
我會使用url安全Base64編碼描述在[需要一個加密/解密方法沒有'/'在加密的字符串](http:// stackoverflow.com/questions/15109313/need-an-encryption-decryption-method-does-not-have-a-in-the-encrypted-string) – CodesInChaos