2017-05-16 1 views
0

쿼리 문자열을 암호화하고 해독하는 방법에 대한 기사를 많이 읽었지만 HTML 태그에서 사용하는 방법을 찾지 못하는 것 같습니다. 이것은 내가 달성하려고하는 것입니다 제품 ID는 interger하지만 나는 그것을 SingleProduct.aspx 페이지로 보내고 싶지 않습니다. 나는 그것을 암호화 한 후 다른 작업을asp.net에서 앵커 태그 쿼리 문자열 암호화 및 해독

<a href="Singleproduct.aspx?Product=<%#Eval("Product_Id")) %>"> 
+0

HttpModule에서 쿼리 문자열 암호화를위한 Mad Kristensen의 기사 (http://madskristensen.net/post/httpmodule-for-query-string-encryption)를 확인하십시오. – kimbaudi

답변

0

난 내 암호화 키로 사용자의 ID (세션 [ "사용자 ID"]) 사용을 위해의를 만들기 위해 페이지에 암호를 해독 할 수 있습니다.

protected void Page_Load(object sender, EventArgs e) 
{ 
    Session["UserId"] = "rainmaker"; 
} 

protected string EncodeId(object id) 
{ 
    var encryptKey = (string)Session["UserId"]; 
    var encryptKeyArray = Encoding.ASCII.GetBytes(encryptKey); 
    Array.Resize(ref encryptKeyArray, 16); 
    // Encrypt the string to an array of bytes. 
    byte[] encrypted = EncryptStringToBytes(Convert.ToString(id), encryptKeyArray, encryptKeyArray); 
    string encryptedStr = Convert.ToBase64String(encrypted).Replace('+', '-').Replace('/', '_'); 
    return encryptedStr; 
} 

세션 [ "사용자 아이디"]에 의해
Singleproduct.aspx.cs 복호화

등 REF RijndaelManaged Class
productlist.aspx 등

<a href="Singleproduct.aspx?enProduct=<%#EncodeId(Eval("id")) %>">En Product Detail</a> 


productlist.aspx.cs

var enProductId = Request.QueryString["enProduct"]; 
if (enProductId != null) 
{ 
    var encryptKey = (string)Session["UserId"]; 
    var encryptKeyArray = Encoding.ASCII.GetBytes(encryptKey); 
    Array.Resize(ref encryptKeyArray, 16); 
    var encryptedArray = Convert.FromBase64String(enProductId.Replace('_', '/').Replace('-', '+')); 
    // Decrypt the bytes to a string. 
    string id = DecryptStringFromBytes(encryptedArray, encryptKeyArray, encryptKeyArray); 
    Response.Write(id); 
} 

또는 ca n 상세 ID에 대한 링크 용 GUID 필드를 추가하십시오.

+0

답장을 보내 주셔서 감사합니다. 내 앵커 HTML 태그에서 이것을 사용할 수있는 방법이 없습니까? – Mcbaloo

+0

제품 데이터를 가져온 후 ID를 암호화하는 방법은 무엇입니까? – Rainmaker