0

呼び出し時にパスワードを送信する 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;
}

しかし、返されたパスワードを暗号化するにはどうすればよいですか?

2 番目の質問: 上記のアクション メソッドが APIController 内にある場合、これは返される文字列がデフォルトで Json 形式としてシリアル化されることを意味しますか?

4

2 に答える 2

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: application/json、json 応答が送信され、クライアントがAccept: application/xmlヘッダーを配置すると、API は xml 応答を返します。

于 2012-09-11T13:41:52.647 に答える
1

クライアント側で復号化する必要があると思いますか?次に、HTTPS/SSL を使用します。

文字列は自動的にシリアル化されないか、少なくとも必要なオブジェクトにシリアル化されません。シリアル化する型を返すと、Web API が自動的にシリアル化します。

于 2012-09-11T13:42:28.527 に答える