C# 用C语言将二进制(64)SQL Server数据解析为纯文本#
我有一个SQL Server数据库,其中包含一个包含密码的C# 用C语言将二进制(64)SQL Server数据解析为纯文本#,c#,json,api,C#,Json,Api,我有一个SQL Server数据库,其中包含一个包含密码的binary(64)列。我正在使用一个C#ASP.NET API查询数据,并将数据作为字符串返回给我的C#代码 在SQL Server中,密码是 0x507572706C6500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 在我的C#中,作为字符串的密码是
binary(64)
列。我正在使用一个C#ASP.NET API查询数据,并将数据作为字符串返回给我的C#代码
在SQL Server中,密码是
0x507572706C6500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
在我的C#中,作为字符串的密码是
UHVycGxlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
在纯文本中,密码是:Purple
我手头的问题是如何使用C#来“解析”返回的字符串并将其转换为可读格式
我尝试了下面的语法,但我得到一个错误。。。将哈希密码“解析”为纯文本的正确方法是什么
找不到任何可识别的数字
公共类SQLData
{
公共字符串传递{get;set;}
}
公共静态字符串二进制字符串(字符串数据)
{
List byteList=新列表();
对于(int i=0;i
首先,在数据库中以纯文本形式存储密码是一个糟糕的主意。也就是说,数据库中的二进制数据列是十六进制的(以16为基数)
在您的示例中,要转换
0x507572706C6500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
要在C#中使用Purple
,您可以编写:
Encoding.UTF8.GetString(yourByteArrayVariable).TrimEnd(\'0')
TrimEnd
是必需的,因为您的列是固定宽度的二进制而不是varbinary。因此,它用空字符(0
)右键填充并且应该从结果字符串中删除。您是在询问如何解码SQL server字符串还是c字符串?c字符串看起来像Base64,所以请看…是的,它是Base64。转到并解码,您将得到“紫色…”。。。“附加了一堆空字符。@dbc-这正是我需要的!!!非常感谢你!这一切都是关于知道要搜索什么!我得到一个编译错误,无法从字符串转换为字节[]。您从数据库返回的数据类型可能不是字节[]
,可能是字符串。你能编辑你的文章,包括你的代码,显示你是如何从数据库中获取列的吗?如果你看我的类SQLData,我将它转换成C中的字符串数据类型#
Encoding.UTF8.GetString(yourByteArrayVariable).TrimEnd(\'0')