C# 加密后将字符串强制转换回对象或执行此操作的方法
我目前正在尝试向msmq传递一条加密消息,由于下面的链接,我已经能够对正文中的一些字段(如用户名和密码)进行加密 请参阅以下代码:C# 加密后将字符串强制转换回对象或执行此操作的方法,c#,encryption,msmq,C#,Encryption,Msmq,我目前正在尝试向msmq传递一条加密消息,由于下面的链接,我已经能够对正文中的一些字段(如用户名和密码)进行加密 请参阅以下代码: var simpleAes = new SimpleAES(); var a = new AddToBasketView { Url = simpleAes.EncryptToString(retailerProduct.DeepLink), Retai
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()));
当我来解密它时,我需要它是一个对象而不是字符串,这样我就可以使用它,例如a.url a.password a.retailerid等等……好的,您使用的“加密”抽象只支持出于某种原因对字符串进行加密。因此,如果要使用SimpleAes
,则需要将对象序列化为字符串,以便可以使用SimpleAes
对其进行加密
然后,当您解密时,您需要将加密字符串解密回清晰字符串,然后将清晰字符串反序列化回类实例
一旦对象被删除,您就无法访问它的属性。所有数据都应该被置乱,如果没有密钥和解密算法,将很难将其更改回来,或者解释其含义
这与或不同。太模糊了。“失败”时的例外情况是什么?:您正在搜索的是“序列化”。我需要的是序列化。谢谢@KooKiz,我正在处理一个解决方案