在asp.net mvc中加密和解密Url

时间:2014-06-04 09:48:51

标签: asp.net-mvc

我使用asp.net mvc 5.我有两页。带有字段的第一页是输入新的PIN,第二页是重新输入新的PIN

我在第一页的提交表单中传递了cardID和新的PIN码,例如:

.../ChangePIN/ConfirmPIN?cardID=123456789&newPIN=123456

我要加密"cardID = 123456789""newPIN = 123456",我该怎么办?

namespace ATM.Web.Controllers
{
    public class ChangePINController : Controller
    {
        ATMDb ATMContext = new ATMDb();
        string cardID = ATM.Core.Utilities.MyUtilities.getInstance().Card.CardId;
        //
        // GET: /Card/ChangePIN
        public ActionResult ChangePIN(string id)
        {
            if (id == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
            }
            var card = ATMContext.Card.Find(id);
            if (card == null)
            {
                return HttpNotFound();
            }
            ViewBag.cardID = id;
            return View();
        }

        [HttpGet]
        public ActionResult ConfirmPIN(string cardID, string newPIN)        
        {
            ViewBag.cardID = cardID;
            ViewBag.newPIN = newPIN;
            return View();
            }

        [HttpPost]
        public ActionResult ConfirmPIN(string cardID, string newPIN, string newPINConfirm)
        {
            if (newPIN != newPINConfirm)
            {
                ViewBag.Message = "";
                ViewBag.cardID = cardID;
                ViewBag.newPIN = newPIN;
                return View();
            }
            else
            {
               var card = ATMContext.Card.Find(cardID);     
                ATMContext.Entry(card).State = EntityState.Modified;                 
                card.PIN = newPINConfirm;
                ATMContext.SaveChanges();
                return RedirectToAction("Success");
            }
        }

        public ActionResult Success()
        {
            return View();
        }        
    }
}

请帮帮我 谢谢大家。

1 个答案:

答案 0 :(得分:2)

在加密网址中,如果请求者对所有获取请求都是开放的,则必须知道加密。 如果您在视图中使用内部链接,则可以为其创建静态类(实用程序)。前

  public static Encryption{
  public static string encrypt(string ToEncrypt)
        {
              return Convert.ToBase64String(Encoding.ASCII.GetBytes(ToEncrypt));
        }
        public static string decrypt(string cypherString)
        {
              return Encoding.ASCII.GetString(Convert.FromBase64String(cypherString));
        }
}

在您的视图中使用:

@Html.ActionLink("link", "Action_name", "Controller_name", new { id=Encryption.encrypt(article.ArticleID) }, null)

在使用Id ex。

之前,您必须解密
 public ActionResult ChangePIN(string id)
        {
        string _id=Encryption.decrypt(id);
        ...
        }

希望它会有所帮助。