我目前正在尝试将加密消息传递给 msmq 并且已经能够加密正文中的某些字段,例如用户名和密码,这要归功于以下链接Simple insecure two-way "obfuscation" for 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);
但我真正想做的是加密整个消息。正文
所以我尝试了以下
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 等....