0

現在、暗号化されたメッセージを msmq に渡そうとしていますが、次のリンクのおかげで、ユーザー名やパスワードなど、本文の一部のフィールドを暗号化できるようになりましたC# のシンプルで安全でない双方向の「難読化」

次のコードを参照してください。

var simpleAes = new SimpleAES();

            var a = new AddToBasketView
            {
                Url = simpleAes.EncryptToString(retailerProduct.DeepLink),
                RetailerProductId = retailerProduct.Id,
                RetailerId = retailerProduct.RetailerId,
                Password = simpleAes.EncryptToString((form["Password"])),
                Username = simpleAes.EncryptToString(form["Username"])
            };
            a.RetailerProduct = _retailerProductRepository.GetRetailerProduct(a.RetailerProductId);
  msgQ.Send(a);

しかし、私が本当にやりたいことは、メッセージ全体を暗号化することです.Body

だから私は次のことを試しました

 msgQ.Send(simpleAes.EncryptToString(a.ToString()));

これにより本体が暗号化されますが、復号化するときに、オブジェクトを期待するコードが失敗します。これを処理する方法がわかりません。

ユーザー名とパスワードを復号化するときに使用していたコードは次のとおりです。

  var message = _msgQ.Receive(); // this should be synchronous and block until we receive

        // Is the message we have an empty message or a message?
        if (message != null)
        {


            #region decrypt paword and username
            var simpleAes = new SimpleAES();


            var addToBasketView = (AddToBasketView)message.Body;

            addToBasketView.Password = simpleAes.DecryptString(addToBasketView.Password);
            addToBasketView.Username = simpleAes.DecryptString(addToBasketView.Username);

            #endregion  decrypt paword and username

(AddToBasketView)message.Body を文字列として渡した場合、どのように解読できますか?

編集:

問題は、オブジェクトaaを暗号化すると、それを文字列にキャストする必要があることです:

msgQ.Send(simpleAes.EncryptToString(a.ToString()));

復号化するときは、文字列ではなくオブジェクトにする必要があるため、ieaurl a.password a.retailerid などを使用できます。

4

1 に答える 1

1

さて、使用している「暗号化」の抽象化は、何らかの理由で文字列の暗号化のみをサポートしています。したがって、使用したい場合は、オブジェクトを文字列にシリアライズして、暗号化にSimpleAes使用できるようにする必要があります。SimpleAes

次に、復号化するときに、暗号化された文字列を復号化してクリア文字列に戻してから、クリア文字列を逆シリアル化してクラス インスタンスに戻す必要があります。


オブジェクトが暗号化されると、オブジェクトのプロパティにアクセスできなくなります。すべてのデータはスクランブルされている必要があり、キーと復号化アルゴリズムがなければ、データを元に戻したり、その意味を解釈したりすることは非常に困難でなければなりません。

これは、エンコーディングシリアライゼーションとは異なります。

于 2012-09-03T14:24:18.737 に答える