C# 获取八进制字符串中的dsa签名值

C# 获取八进制字符串中的dsa签名值,c#,C#,我正在尝试读取属性dsa签名的八进制字符串值。我从默认命名上下文属性中获取了字段。但它是在字节数组中,当我试图将其转换为字符串时,它会给出错误的输出 有人知道如何做正确的八分相转换吗 DirectoryEntry entry = new DirectoryEntry("LDAP://DC=cobra,DC=net"); PropertyValueCollection propCol = entry.Properties["dSASignature"];

我正在尝试读取属性dsa签名的八进制字符串值。我从默认命名上下文属性中获取了字段。但它是在字节数组中,当我试图将其转换为字符串时,它会给出错误的输出

有人知道如何做正确的八分相转换吗

DirectoryEntry entry = new DirectoryEntry("LDAP://DC=cobra,DC=net");
            PropertyValueCollection propCol = entry.Properties["dSASignature"];
            Console.WriteLine(propCol.PropertyName + " : " + propCol.Value);
            System.Text.UTF8Encoding enc = new System.Text.UTF8Encoding();
            string str = enc.GetString((System.Byte[])propCol.Value);
            Console.WriteLine("value : " + str);
提前谢谢

但它是在字节数组中,当我试图将其转换为字符串时,它会给出错误的输出

这是一个字节数组。只是一个任意的字节序列。它不是UTF-8编码的文本,这就是你所要处理的

如果要显示格式化为十六进制的字节,可以使用:

byte[] data = (byte[]) propCol.Value;
string hex = BitConverter.ToString(data);

如果您需要更高效地将其作为文本传输,则可以使用base64。。。但理想情况下,您应该尽可能长时间地将其视为字节数组,因为它基本上只是二进制数据。

谢谢jon,但我已经尝试过了,不会给出正确的输出。上面将给出下面的输出,只不过是字节01-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-96-3D-39-12-2E-0C-36-41-81-27-65-90-7A-FD-F4-B2@sunder你认为“正确的输出”是什么?这就是字节数组的十六进制表示形式。它是您正在获取的数据的精确表示。您期望得到什么以及为什么?是的,十六进制表示法正是在默认命名上下文GUI中具有值的机器。但是,从这些原始数据中得到的信息是43242122-71ff-48e7-9296-1546887c14cc 2012-07-16 16 16:45:23域控制器的guid id、日期等,这是我试图实现的。@sunder:然后您需要找到数据的格式。你有关于这方面的文档吗?我试着在msdn中找到这个,我怎么能把它转换回八进制字符串,但还是没有运气。我会继续这样做。所以我很快就在这里加上了这个,希望有人在过去做过。