如何在asp.net mvc中实现加密



我试着了解asp.net MVC中的加密

这很难理解…

谁能给我举个简单的例子在asp中使用加密?净MVC ? ?我试图使简单的应用程序使用加密在asp.net mvc。我读了一些关于加密的文章。但是没有一篇文章展示如何用asp.net MVC 3或4加密数据或查询
can some one give me reference about encrypt in asp.net mvc 3 / 4 or give me some simple example of encrypt..

这是一个库,您可以使用加密和解密您的urlhttp://jbtule.github.io/keyczar-dotnet/

给定您的用例,您将创建加密url并将其发送到电子邮件

为了得到这个答案,让我们假设加密的url是

" yourdomainname/加密/kladsfiopfvnjladsiopdfsipejkadsjsadipodafskl"

假设加密字符串表示可以被解密为字段username, dateValidThrough和emailaddress的a字符串,以"|"字符分隔。即

username + "|" + datevalidthough + "|" emailaddress

为了接收加密的url,你在RouteConfig.cs routes

中有一个路由
        routes.MapRoute(
            name: "PaswordReset",
            url: "Encrypted/{id}",
            defaults: new {controller = "Password", action = "Reset", id = UrlParameter.Optional});       

这将把它们带到这个控制器它有两个方法

public class PasswordController{
  public ActionResult Reset(string id){}
    //returns a view that has a form for them to enter their username and email
  [HttpPost]
  public ActionResult Reset(string id, string username, string email){}
   //derypt here and verify etc.
 }

首先,他们会看到一个表单,他们可以在其中输入他们的电子邮件地址和用户名。它应该有一个隐藏字段用于加密url部分

当他们提交表单时,使用您加密的密码短语解密id。

验证用户名和电子邮件地址是否匹配。确保datvalidthrough为<今天,然后允许他们更改密码。>

要生成加密字符串,您可以使用上面的库,它类似于

string plaintext = userName + "|" + DateTime.Today.AddDays(2).ToString() + "|" + userEmailAddress;
WebBase64 ciphertext;
string key = (new Random().Random(10000000) + 1000).ToString();
//pretend this dictionary represents a database storage medium
public static Dictionary<string,string> CypherTextToKey= new Dictionary<string,string>();
//encrypting
using (var encrypter = new Encrypter(key))  
{
   ciphertext = encrypter.Encrypt(plaintext);
}
CypherTextToKey.Add(cyphertext, key);
SendEmail(user, "Encrypted/"+cyphertext");

要解密它,你可以这样做

var key = CypherTextToKey[cyphertext]; //get the key from your database
using (var crypter = new Crypter(key)){
  var plaintext2 = crypter.Decrypt(ciphertext)
}

如果全部匹配,则给它们一个新密码,等等。

有一种方法可以使用加密的url来操作整个网站,但这是另一回事,我不确定这是否是你需要的(它有点复杂)。如果你想加密每个url,请发表评论,我会给你另一个答案。

最新更新