我想在我的asp.net MVC3中开发一个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格式?
答案 0 :(得分:2)
对于密码加密,您可以使用带有System.Security.Cryptography
命名空间/汇编的RC2的对称密钥。
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?
web-API支持自动内容协商,这意味着如果使用HTTP请求API的客户端将accept标头设置为Accept: application/json
,那么如果客户端将Accept: application/xml
放入标头,则会发送json响应然后API返回xml响应。
答案 1 :(得分:1)
我认为它需要在客户端解密?然后使用HTTPS / SSL。
字符串不会自动序列化,或者至少序列化为您想要的对象。返回要序列化的类型,Web API将自动序列化它。