我想使用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的例子吗?
答案 0 :(得分:0)
只需将其设置为字符串,而不是字节数组。
var skey = Encoding.ASCII.GetString(StringToByteArray(curveSKey));
server.SetOption(ZSocketOption.CURVE_SECRETKEY, skey);