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# 中进行解析) ,例如通过SqlXml
或XElement
),或者它不是有效的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(‘‘)函数用法