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# 中解密的主要内容,如果未能解决你的问题,请参考以下文章

Sql server For XML Path 学习

Sql Server 中FOR XML PATH(‘‘)函数用法

Sql Server 中FOR XML PATH(‘‘)函数用法

灵活运用 SQL SERVER FOR XML PATH

SQL SERVER FOR XML PATH

灵活运用 SQL SERVER FOR XML PATH