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