C# Net核心查询字符串加密

C# Net核心查询字符串加密,c#,asp.net,encryption,asp.net-core,query-string,C#,Asp.net,Encryption,Asp.net Core,Query String,我正试图按照以下思路做一些事情: 私有IDataProtector\u保护器 public PieController(IPieRepository pieRepository, ICategoryRepository categoryRepository, IDataProtectionProvider provider) { _pieRepository = pieRepository; _categoryRepository = categoryRepository;

我正试图按照以下思路做一些事情:

私有IDataProtector\u保护器

public PieController(IPieRepository pieRepository, ICategoryRepository categoryRepository, IDataProtectionProvider provider)
{
    _pieRepository = pieRepository;
    _categoryRepository = categoryRepository;
    _protector = provider.CreateProtector(GetType().FullName);
}

public IActionResult Details(int id)
{
    var pie = _pieRepository.GetPieById(id);
    pie.PieId = _protector.Protect(pie.PieId.ToString());
    if (pie == null)
        return NotFound();

    return View(pie);
}
我试图在查询字符串中加密PieId,以便它不会显示给用户。由于
IDataProtector
仅适用于
字符串
,因此我在试图找到插入PieId的方法时遇到了问题,PieId是
int
。有什么建议吗

我试过:
pie.PieId=Int32.Parse(_protector.Protect(pie.PieId.ToString())
pie.PieId=Convert.ToInt32(_protector.Protect(pie.PieId.ToString())但两者都不起作用


我是以这个例子为基础的

你需要加密还是只是混淆?@maccettura我需要能够生成加密的查询字符串,并能够解密所述查询字符串以处理数据…@Milo你不能这样做:IDataProtector.Protect()返回的密文不能转换为整数。您应该在模型中使用字符串,或者使用专用视图模型,将饼图标识符显示为字符串。@Pinpoint谢谢,我将尝试ViewModel方法。顺便问一下,是否有任何不好的理由将对象id作为
字符串而不是
int