2012-09-11 128 views
0

我要發展我的asp.net MVC3當它envoked發送密碼,裏面的WebAPI控制器加密返回的JSON,它類似於:如何從一個的WebAPI控制器

public string GetPasswordByUserId(int id) 
{ 
    var password = user.password.FirstOrDefault((u) => u.Id == id); 
    if (password == null) 
    { 
     throw new HttpResponseException(HttpStatusCode.NotFound); 
    } 
    return password; 
} 

卻怎麼也我加密返回的密碼?

第二個問題:如果上述操作方法在APIController中,那麼這是否意味着返回的字符串將被默認序列化爲Json格式?

回答

2

對於密碼加密,您可以使用對稱密鑰與RC2,它使用System.Security.Cryptography命名空間/程序集。

byte[] toEncryptPwd = ASCIIEncoding.ASCII.GetBytes(strToEncrypt); 
RC2 encPwd = RC2.Create("RC2"); 

strToEncrypt = Convert.ToBase64String(encPwd.CreateEncryptor(Key, rgbIV).TransformFinalBlock(toEncryptPwd, 0, toEncryptPwd.Length)); // strToEncrypt is now encrypted 
encPwd.Clear(); 

//您必須在代碼或數據庫中的某處硬編碼密鑰和rgbIV。

爲什麼你想返回密碼爲json?我沒有按照設計和需要。

返回類型是否是json?

的網絡API支持自動內容協商這意味着,如果該請求使用HTTP的API客戶端,把作爲Accept: application/json然後JSON效應初探被別人發送接受頭如果客戶提出Accept: application/xml在頭則API返回的XML響應。

1

我認爲它需要在客戶端解密?然後使用HTTPS/SSL。

字符串不會自動序列化,或者至少會序列化爲所需的對象。返回你想要序列化的類型,Web API會自動序列化它。