Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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
使用Bouncycastle在Java和.NET之间执行Diffie-Hellman密钥交换_Java_.net_Cryptography_Bouncycastle_Diffie Hellman - Fatal编程技术网

使用Bouncycastle在Java和.NET之间执行Diffie-Hellman密钥交换

使用Bouncycastle在Java和.NET之间执行Diffie-Hellman密钥交换,java,.net,cryptography,bouncycastle,diffie-hellman,Java,.net,Cryptography,Bouncycastle,Diffie Hellman,我想使用bouncycastle在两个软件组件(Alice和Bob)之间执行Diffie-Hellman密钥交换。Alice和Bob有自己的密钥对,由同一CA颁发。然而,Alice将是Java,Bob将是C 我已经搜索并找到了如何用每种语言进行交换的示例。但我发现的例子有两个问题: 通过在同一块示例代码中实现Alice和Bob之间的交换,这些示例过于简化。我很难理解Alice和Bob在实际需要通过SSL流交换中间值(g^a mod p和g^b mod p)时的样子 这些示例总是针对使用相同语言编

我想使用bouncycastle在两个软件组件(Alice和Bob)之间执行Diffie-Hellman密钥交换。Alice和Bob有自己的密钥对,由同一CA颁发。然而,Alice将是Java,Bob将是C

我已经搜索并找到了如何用每种语言进行交换的示例。但我发现的例子有两个问题:

  • 通过在同一块示例代码中实现Alice和Bob之间的交换,这些示例过于简化。我很难理解Alice和Bob在实际需要通过SSL流交换中间值(g^a mod p和g^b mod p)时的样子
  • 这些示例总是针对使用相同语言编写的软件组件。我在别处读到Diffie-Hellman密钥交换库经常使用一些内部常量来生成它们的中间值。根据我对DH工作原理的了解,我不认为任何类型的常数都是必要的,但我不是专家
  • 基于这两个问题,我有两个问题:

  • 是否有人知道一个代码示例,它分别显示了双方的代码,以及
  • 如果我对java和.net组件都使用bouncycastle API,有人知道为什么这些组件不能同意使用相同的符号密钥吗

  • 必要的常数是固定的,即:我们工作的组,以及这个组的一个生成器。对于通常的模块化DH,这意味着模块
    p
    和生成器
    g
    。此外,您是要实现SSL(或TLS),还是要创建自己的协议(代替SSL/TLS或在SSL/TLS之上)?@Paulo-因为Alice和Bob都有自己的密钥对,我希望在TCP上建立SSL,并使用该流在它们之间执行DH密钥交换。我是否回答了您的问题,或者您是否在问其他问题?那么,如果您已经有SSL保护您的数据连接,为什么还需要另一个DH exchange?如果可以监听连接(例如,在SSL握手中),则DH非常有用。然后,您可以让其中一个生成密钥并发送给另一个。(并不是说我不想让你使用Diffie Hellman,这似乎有点多余。我不知道示例代码。)如果你展示你正在使用的BouncyCastle代码,也许我们可以发现你的错误。必要的常量是固定的,即:我们工作的组,以及该组的一个生成器。对于通常的模块化DH,这意味着模块
    p
    和生成器
    g
    。此外,您是要实现SSL(或TLS),还是要创建自己的协议(代替SSL/TLS或在SSL/TLS之上)?@Paulo-因为Alice和Bob都有自己的密钥对,我希望在TCP上建立SSL,并使用该流在它们之间执行DH密钥交换。我是否回答了您的问题,或者您是否在问其他问题?那么,如果您已经有SSL保护您的数据连接,为什么还需要另一个DH exchange?如果可以监听连接(例如,在SSL握手中),则DH非常有用。然后,您可以让其中一个生成密钥并发送给另一个。(并不是说我不想让你使用Diffie Hellman,这似乎有点多余。我不知道示例代码。)如果你展示你正在使用的BouncyCastle代码,也许我们可以发现你的错误。