Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#中的Diffie-Hellman方法不起作用_C#_Public Key Encryption_Diffie Hellman - Fatal编程技术网

C#中的Diffie-Hellman方法不起作用

C#中的Diffie-Hellman方法不起作用,c#,public-key-encryption,diffie-hellman,C#,Public Key Encryption,Diffie Hellman,所以,毕竟,我想解释一下这个方法: 理想是两个人通过公共交流渠道交换一种价值,而不是真正发送 这就是它的工作原理: 这是我的C#代码: 唯一的问题是,我不能得到相同的值。 我已经研究了公式是否正确,我想我没有弄错,但是C代码似乎不同意 结果确实介于0和251之间,但总是不同的 那么我做错了什么 C代码可以吗?我想你的问题是你使用的是double而不是long(整数值),因为double只存储为实数的近似值,你可能会得到舍入错误。另见本帖 如果要处理较大的值,则必须使用具有任意大小的结构,如b

所以,毕竟,我想解释一下这个方法:

理想是两个人通过公共交流渠道交换一种价值,而不是真正发送

这就是它的工作原理:


这是我的C#代码:

唯一的问题是,我不能得到相同的值。 我已经研究了公式是否正确,我想我没有弄错,但是C代码似乎不同意

结果确实介于0和251之间,但总是不同的

那么我做错了什么


C代码可以吗?

我想你的问题是你使用的是double而不是long(整数值),因为double只存储为实数的近似值,你可能会得到舍入错误。另见本帖


如果要处理较大的值,则必须使用具有任意大小的结构,如
biginger

我认为您的问题在于使用的是double而不是long(整数值),因为double仅作为实数的近似值存储,因此可能会出现舍入错误。另见本帖


如果要处理较大的值,则必须使用具有任意大小的结构,如
biginger

您使用的是
double
,这是一个浮点数,表示数学上没有为浮点数定义的内容。。。模运算符


我建议使用任意精度的整数,比如
biginger

您使用的是
double
,它是一个浮点数,在数学上没有为浮点数定义。。。模运算符


我建议使用任意精度的整数,比如
BigInteger

我很感激您将要实现Diffie-Hellman算法的想法,但是对于每个正在寻找解决方案的人,我可以告诉您,没有必要再次发现圆

Diffie-Hellman密钥交换协议已在此处实现:

System.Security.Cryptography.ECDiffieHellmanCng 
这里有一个链接,可以链接到伟大的用法示例:


在部署之前,请注意衡量解决方案在您的环境中的性能。在我的Intel Core I5上,生成公钥的过程最多需要40毫秒:-(

我很感激您将实施Diffie-Hellman算法的想法,但对于所有正在寻找解决方案的人,我可以告诉他们,没有必要再次发现圆

Diffie-Hellman密钥交换协议已在此处实现:

System.Security.Cryptography.ECDiffieHellmanCng 
这里有一个链接,可以链接到伟大的用法示例:


在部署之前,请注意在您的环境中测量解决方案的性能。在我的英特尔Core I5上,生成公钥的过程最长需要40毫秒:-(

考虑到即使
也可能不够大,无法进行加密use@DarkSquirrel42是的,但我无论如何都不会使用自行实现的算法进行加密,对于他的例子来说,这应该足够了。Long不会这样做,Decimal是的,Long会得到一些正确的1,double none,Decimal all,但Decimal是小f或者我的值,如果exp太大,这些值就不适合lol。正如DarkSquirrel42建议的那样@jaimesv使用
biginger
来获得更大的值。请考虑到即使
long
也可能不足以进行加密use@DarkSquirrel42是的,但我不会使用自实现算法进行加密当然,就他的例子来说,它应该足够了。Long不这样做,Decimal是的,Long它得到了一些1 rigth,double none,Decimal all,但Decimal对于我的值来说太小了,如果exp太大,这些值就不适合lol。正如DarkSquirrel42建议的那样@jaimesv使用
biginger
来获得更大的值。是的,这个问题很有效我们应该有两个正确答案,因为他们两个都能做到。多亏了这两个:染料,这都起作用了,这个问题应该有两个正确答案,因为他们两个都能做到。多亏了这两个:D