使用RSA密钥的Diffie Hellman密钥协议?

vrwim

我想让2个当事方使用其公钥和私钥就同一秘密密钥达成一致。我不希望他们有任何互动。所以我在想method(A.privKey, B.pubKey)给相同的数字method(B.privKey, A.pubKey)

我想知道Diffie-Hellman密钥协商算法在您使用Java时是否适用于Java KeyPairGenerator.getInstance("RSA")

如果是这样,我该怎么做?还是我需要使用KeyPairGenerator.getInstance("DH")

我在网上搜索过,似乎找不到答案。

乱码

Diffie-Hellman和RSA背后的数学方法足够不同,因此RSA密钥不能用于DH。

迪菲·赫尔曼

DH是一个密钥交换,给定两个密钥对,它将产生一个共享密钥。它不会直接加密数据。(但是通过将DH与对称加密相结合来构建加密很容易)。

双方都同意一个小组,在由g定义的最简单情况下pp一个是安全的素数。

私钥只是一个数字a,对应的公钥Ag^a mod p由于指数是可交换的,因此需要计算一个共享密钥,因此

A^b = (g^a)^b = g^(ab) = (g^b)^a = B^a

为此,两个密钥对都需要使用相同的组。实现此目的的最简单方法是选择一个特定的组并将其硬编码到协议/应用程序中。

RSA

RSAm用公共密钥加密消息,从而产生密文c因此,它仅使用一个密钥对,即接收者的密钥对。

私钥是固定指数e(通常为65537),并带有一对质数pq

对应的公钥是e和素数的乘积n = p * q

加密是通过计算发生的c = m^e mod n,只有在您知道的情况下才能受到认可pq仅在您知道的情况下才受到认可n

比较

您可以使用RSA生成共享密钥,方法是生成一个随机密钥作为发送者,并使用接收者的公共密钥对其进行加密。这适用于在没有交互的情况下加密发送给收件人的邮件。但是,由于发送者可以控制共享密钥,因此它不对发送者进行身份验证。因此,如果您不能使用RSA来实现非交互式可拒绝身份验证。但是您可以使用RSA签名消息(但不要使用相同的密钥对进行签名和加密),从而为您提供不可否认的身份验证。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Bouncy Castle Diffie-Hellman与KDF的协议:什么是用户密钥材料?

使用ECDSA x509证书的Diffie Hellman密钥交换

使用颜色解释Diffie-Hellman密钥交换?

为什么在Diffie-Hellman密钥交换中使用质数?

使用椭圆曲线Diffie-Hellman和辅因子密钥生成对称密钥

使用Diffie Hellman密钥交换和椭圆曲线加密快速加密

使用Javascript进行Diffie-Hellman密钥交换有时会出错

我正在尝试使用加法重新创建 Diffie-Hellman 密钥交换,但出现错误

OpenSSL 3 Diffie-Hellman 密钥交换 C++

密码学Python:Diffie-Hellman密钥交换实现

电子在单独的线程上运行加密Diffie Hellman密钥

Java / Erlang:Diffie Hellman密钥交换不起作用

Crypto ++和Python之间的Diffie-Hellman密钥交换

Diffie Hellman密钥交换不起作用(Javascript)

如何为diffie hellman算法生成curve25519密钥对?

通过网络或任何其他密钥交换的 Diffie-Hellman 密钥交换

使用“ KexAlgorithms diffie-hellman-group1-sha1”无法解决“未找到匹配的密钥交换方法”错误

不使用密钥的RSA解密

Python Diffie-Hellman交换加密库。共享密钥不一样

从Diffie-Hellman输出中选择一个加密密钥

Port Diffie-Hellman密钥交换算法从Linux src到Windows

用于Diffie-Hellman密钥交换的C ++ GMP随机数生成

如何将Diffie-Hellman密钥交换推广到三方或更多方?

如何在Debian 8.0上启用diffie-hellman-group1-sha1密钥交换?

使用 Python 生成和使用 RSA 密钥

使用lftp指定密钥交换协议

锁定帐户密码,而是使用RSA密钥

在Android中使用RSA解密AES密钥

使用RSA公钥加密AES密钥