C#中CurveZMQ的示例以及为什么在使用CurveZMQ时我不能使用SetOption()来CURVE_SECRETKEY?

时间:2016-07-14 03:59:27

标签: c# .net zeromq

我想使用CurveZMQ进行客户端和服务器之间通信的安全身份验证和机密性。但我在C#中找不到任何例子。我尝试一步一步地遵循API文档。我在设置CURVE_PUBLICKEY,CURVE_SECRETKEY和CURVE_SERVERKEY时遇到了问题。

这是我的代码。 socket' server.CurveSecretKey'抛出类型' ZeroMQ.ZException'的异常: 在ZeroMQ.ZSocket.GetOption(ZSocketOption选项,IntPtr optionValue,Int32& optionLength)\ r \ n在ZeroMQ.ZSocket.GetOption(ZSocketOption选项,Byte []& value)\ r \ n在ZeroMQ.ZSocket.get_CurveSecretKey() "

public static byte[] StringToByteArray(string hex)
    {
        return Enumerable.Range(0, hex.Length)
                         .Where(x => x % 2 == 0)
                         .Select(x => Convert.ToByte(hex.Substring(x, 2), 16))
                         .ToArray();
    }

var context = new ZContext();
server = new ZSocket(context, ZSocketType.ROUTER);
server.SetOption(ZSocketOption.CURVE_SERVER, 1);
string curveSKey = "8E0BDD697628B91D8F245587EE95C5B04D48963F79259877B49CD9063AEAD3B7";
var skey = StringToByteArray(curveSKey);
server.SetOption(ZSocketOption.CURVE_SECRETKEY, skey);

你能在C#中给我一些关于CurveZMQ的例子吗?

1 个答案:

答案 0 :(得分:0)

只需将其设置为字符串,而不是字节数组。

var skey = Encoding.ASCII.GetString(StringToByteArray(curveSKey));
server.SetOption(ZSocketOption.CURVE_SECRETKEY, skey);