问题标签 [public-key-exchange]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
36 浏览

encryption - 密码学 - 密钥生成过程有多重要?

正如问题所说,我想知道生成强密钥以加密连接是否重要。

假设我正在使用 AES 对称密钥加密算法。我可以通过使用诸如“helloworld”之类的键或从某个进程评估的某些特定哈希值来实现哪些更改?

事实是,使用伪随机生成器是一个很好的密钥生成过程。但是,如果我只是使用静态密钥而不将其交换到外部通信通道怎么办?攻击者如何找到我的密钥?

谢谢

0 投票
3 回答
3028 浏览

python - 输出 SecKeyCopyExternalRepresentation

我正在尝试将我的 iPhone 中的公钥传递给其他方,但是我无法使用 iOS 的输出。

示例输出:

BJSCZtBatd2BYEHtyLB0qTZNlphKf3ZTGI6Nke3dSxIDpyP9FWMZbG0zcdIXWENyndskfxV0No/yz369ngL2EHZYw6ggNysOnZ5IQSPOLFFl44m1aAk0o0NdaRXTVAz4jQ==

在python(我的第二方所在的地方)中,我有以下内容:

我得到的错误是ValueError: Could not deserialize key data.

SecKeyCopyExternalRepresentation那么文档中描述的输出到底是什么:

该方法以 PCKS #1 格式返回 RSA 密钥的数据。对于椭圆曲线公钥,格式遵循 ANSI X9.63 标准,使用字节串 04 || X || Y. 对于椭圆曲线私钥,输出格式为公钥与秘密标量的大端编码串联,即 04 || X || 是 || K. 所有这些表示都使用恒定大小的整数,根据需要包括前导零。

如何描述X6.93格式?我将如何将它转换为我可以在 python 代码中使用的东西?

PS我试图将标题添加-----BEGIN PUBLIC KEY-----到xcode输出中。

0 投票
1 回答
789 浏览

java - java.security.InvalidKeyException 在使用 RSA 的 Java AES 密钥交换期间引发

我正在尝试用Java制作一个客户端/服务器程序,允许服务器将使用AES加密的消息发送到客户端。现在,我在创建密钥交换协议时遇到了问题。此密钥交换电流的工作方式是:

  1. 客户端生成 RSA 公钥/私钥对
  2. 客户端将他的 RSA 公钥发送到服务器
  3. 服务器使用客户端的 RSA 公钥生成并加密 AES 密钥
  4. 服务器向客户端发送加密的 AES 密钥
  5. 双方现在都有正确的 AES 密钥,所有消息都可以使用 AES 加密

但是,每次进入第三步时,我都无法使用客户端的 RSA 公钥加密生成的 AES 密钥,因为我收到以下错误:

因此,我无法完成我正在尝试执行的 AES 密钥交换。

Server.java 用于在服务器端做事,Client.java 用于在客户端做所有事情。我的 Server.java 文件如下所示:

我的 Client.java 文件如下所示:

Start.java 用于初始化服务器和客户端。

0 投票
0 回答
252 浏览

java - swift中的Diffie-Hellman可以与JAVA一起使用

我正在尝试在 swift 和 java server 之间开发 key-exchange diffe-Hellman 。我阅读了有关 Diffie hetlman 的所有链接,并且在所有链接中都告诉我应该使用它(g^a mod p)^b mod p = g^ab mod p来制作 PublicKey。

但是当我开始与服务器共享我的公钥时,我遇到了这个异常

我使用标准 X509EncodedKeySpec 获取密钥并在 java 中生成密码。

我已阅读所有此链接,但他们没有帮助我。

0 投票
0 回答
844 浏览

facebook - Bootloader/还在学习中,

我正在查看我的 Facebook 消息/通话记录,其中有我不知道的号码,所以我复制并粘贴它们以查找它们,并弹出确认这是我的问题,在我完成此代码后刚刚接管屏幕。我还想补充一下,我解锁了我的开发者选项,而且我还认为我的 FB、google 帐户是我的手机。这是第二次发生不确定是否相同的代码,我仍然有第一次。我一直在谷歌上搜索并询问其他人,我学到了很多东西,但该死的我仍然无法完全理解,只是零碎的,并且已经为此工作了 3 个月。我需要帮助,我放松了我的思想..有人可以帮忙吗?

这是一些代码

0 投票
1 回答
742 浏览

c# - 来自 ByteArray 的 ECDiffieHellmanPublicKey(使用 ECDiffieHellman NamedCurves)

我正在研究通信 nodejs -> c# 服务器。我需要保护它们之间的连接,所以我选择 ECDiffieHellman 作为密钥交换机制(nodejs 支持它)。我遇到了一些问题......只是我缺乏知识,所以我已经上课了,现在我可以生成和导出密钥,因为base64和nodejs接受c#密钥没有问题,但另一方面c#......赢了甚至不拿他自己的钥匙…… 是的error System.Security.Cryptography.CryptographicException: 'The parameter is incorrect.' ,我知道我做错了,但是什么?

你可以在那里找到故事的其余部分 ECDH nodejs 和 C# 密钥交换

0 投票
0 回答
338 浏览

encryption - 使用 Pycryptodome 进行混合加密的正确密钥交换过程

我正在编写一个使用 ZeroMQ 套接字和Pycryptodome创建安全通信通道的模块。

客户端和服务器之间的初始握手将遵循以下步骤:

  1. 双方将他们的公共RSA 密钥发送给对方。
  2. 服务器生成 AES 会话密钥和该密钥的签名。
  3. 服务器在将会话密钥和签名发送给客户端之前对其进行 RSA 加密。(*)
  4. 客户端验证签名并存储会话密钥。
  5. 客户端生成一个令牌,生成它的签名并将两个 AES 加密的文件发送到服务器。
  6. 服务器验证签名并回显令牌。
  7. 如果收到的令牌与发送的令牌匹配,则认为握手成功。

我在这个线程上发现,最好先对消息签名然后加密,而不是先加密然后签名。

问题是 2048 位 RSA 密钥的签名是 256 字节长。同一密钥的最大加密大小为 190 字节。这意味着我无法按照线程中的建议加密签名。

我应该使用 AES 会话密钥加密签名吗?我应该采取另一种方式吗?

我知道有“标准化”密钥交换协议(例如ECDH),但它们在 Pycryptodome 中尚不可用。

0 投票
1 回答
727 浏览

java - 如何将十六进制公钥转换为 ASN.1 SubjectPublicKeyInfo 结构以进行 Diffie-Hellman 密钥交换?

我正在尝试实现 Diffie-Hellman 密钥交换以使用 JAVA 加密包生成用于加密/解密的对称密钥。这需要双方之间的公钥交换。

客户端共享的公钥是 1024 位十六进制字符串,用于计算共享密钥。如何将此字符串转换为编码密钥格式(ASN.1 SubjectPublicKeyInfo 结构)以创建 PublicKey 对象。

考虑一个示例公钥字符串。参数pg被输入到inputDHParameterSpec对象中。

示例实现:AutoGen 密钥对:

十六进制公钥 - 失败:

在第一个代码块中创建的 byte[] 具有 ASN.1 编码格式的公钥,但hexStringToByteArray(testPublicKey)只是将十六进制转换为 byte[]。因此,在标记线上出现以下错误。

有人可以帮助如何将此十六进制转换为所需的格式吗?还鼓励使用此十六进制字符串来获取密钥的不同实现。

0 投票
1 回答
282 浏览

ios - 我想在 openssl 中为 diffiehellman 更改 P 和 G 的值

由于参数生成可能是一个昂贵的过程,这通常提前完成一次,然后在许多密钥交换中使用相同的参数集。有没有办法在预先设置之前修改 p 和 g ?

0 投票
1 回答
394 浏览

java - 我试图将 EC 公钥从 android 导出到 iOS,最好的方法是什么?

我正在尝试在我的应用程序的 iOS 和 Android 客户端之间执行 EC 密钥交换。我已成功地将它们从 iOS 传输并生成到 Android。但我无法在 iOS 的 android 应用程序中使用生成的密钥。

我正在SecKeyCreateWithData快速使用该方法从“数据”类型生成密钥,但出现此错误:

错误域=NSOSStatusErrorDomain 代码=-50“从数据创建 EC 公钥失败”

我在 android 客户端中使用了以下编码,它生成了一个 base64 字符串,我处理并SecKeyCreateWithData在 swift 中作为数据传递

我想生成一个SecKeyRef公钥,请帮忙