0

asp.net MVC での暗号化について学習しようとしています

それについて理解するのはとても難しい..

asp.NET 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..
4

1 に答える 1

1

これは、URL の暗号化と復号化に使用できるライブラリです http://jbtule.github.io/keyczar-dotnet/

ユースケースを考慮して、暗号化された URL を作成し、電子メールで送信します。

この回答のために、暗号化された URL が

"yourdomainname/encrypted/kladsfiopfvnjladsiopdfsipejkadsjsadipodafskl"

暗号化された文字列が、"|" で区切られたフィールド username、dateValidThrough、および emailaddress に復号化できる文字列を表すとします。キャラクター。すなわち

ユーザー名 + "|" + datevalidthrough + "|" 電子メールアドレス

わかりました。暗号化された URL を受け取るには、RouteConfig.cs ルートにルートがあります。

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

これにより、2つのメソッドを持つこのコントローラーに移動します

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 を復号化します。

ユーザー名と電子メール アドレスが一致していることを確認します。datevalidthrough が < 今日であることを確認してから、パスワードを変更できるようにします。

暗号化された文字列を作成するには、上記のライブラリを使用します。

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 を暗号化する場合は、コメントを作成してください。別の回答で返信します。

于 2013-06-14T05:45:23.420 に答える