SQL Server FOR XML PATH('')) 加密数据需要在 C# 中解密

Posted

技术标签:

【中文标题】SQL Server FOR XML PATH(\'\')) 加密数据需要在 C# 中解密【英文标题】:SQL Server FOR XML PATH('')) encrypt data need to be decrypt in C#SQL Server FOR XML PATH('')) 加密数据需要在 C# 中解密 【发布时间】:2021-10-24 05:12:38 【问题描述】:

谁能帮帮我?我正在使用FOR XML PATH('') 加密 SQL Server 中的特殊字符,但需要在 C# 中解密。

示例:FOR XML PATH('') 加密字符串后为:Companys(原始值“Company's”),如何在 C# 中将该字符串解密回“Company's”?

谢谢, 壁画。

【问题讨论】:

for encrypt special chars 这到底是什么意思,我不明白这个例子。您能否显示您正在使用的代码以及确切的示例输入 不是加密 - 就像使不可读 - 这充其量是一种“编码”(通过将'等某些字符替换为十六进制表示)..... 发布您的完整查询。您也许可以使用 TYPE 和 .value 来完全跳过 XML 编码。 您的代码可能在 SQL 端或 C# 端出现错误,因为FOR XML 生成的数据要么是语法上有效的 XML(在这种情况下,它应该在 C# 中进行解析) ,例如通过SqlXmlXElement),或者它不是有效的XML,而只是用作使字符串连接起作用的技巧,在这种情况下,可以增强T-SQL以解码值本身(通过明智的使用value() 方法)。应该不需要手动解码。 【参考方案1】:

有几个选项。首先,您可以使用System.Net.WebUtility.htmlDecode(),它记录在System.Net.WebUtility。还有另一个选项不需要引用System.Web 程序集——您可以使用System.Net 程序集中的WebUtility.HtmlDecode(),并记录在WebUtility.HtmlDecode。最后,您可以利用 XmlDocument 类(这不是一个理想的解决方案,我只是为了完整起见而展示它 - 上述方法可能更好):

public static string XmlDecode(string value) 
    var xmlDoc = new XmlDocument();
    xmlDoc.LoadXml("<root>" + value + "</root>");
    return xmlDoc.InnerText;

【讨论】:

嗨 Bjorg P,感谢您的回复; Sql server open xml 将“公司”转换为“公司”。您的方法解码为“Company\u001as”。

以上是关于SQL Server FOR XML PATH('')) 加密数据需要在 C# 中解密的主要内容,如果未能解决你的问题,请参考以下文章