问题标签 [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.
encryption - 密码学 - 密钥生成过程有多重要?
正如问题所说,我想知道生成强密钥以加密连接是否重要。
假设我正在使用 AES 对称密钥加密算法。我可以通过使用诸如“helloworld”之类的键或从某个进程评估的某些特定哈希值来实现哪些更改?
事实是,使用伪随机生成器是一个很好的密钥生成过程。但是,如果我只是使用静态密钥而不将其交换到外部通信通道怎么办?攻击者如何找到我的密钥?
谢谢
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输出中。
java - java.security.InvalidKeyException 在使用 RSA 的 Java AES 密钥交换期间引发
我正在尝试用Java制作一个客户端/服务器程序,允许服务器将使用AES加密的消息发送到客户端。现在,我在创建密钥交换协议时遇到了问题。此密钥交换电流的工作方式是:
- 客户端生成 RSA 公钥/私钥对
- 客户端将他的 RSA 公钥发送到服务器
- 服务器使用客户端的 RSA 公钥生成并加密 AES 密钥
- 服务器向客户端发送加密的 AES 密钥
- 双方现在都有正确的 AES 密钥,所有消息都可以使用 AES 加密
但是,每次进入第三步时,我都无法使用客户端的 RSA 公钥加密生成的 AES 密钥,因为我收到以下错误:
因此,我无法完成我正在尝试执行的 AES 密钥交换。
Server.java 用于在服务器端做事,Client.java 用于在客户端做所有事情。我的 Server.java 文件如下所示:
我的 Client.java 文件如下所示:
Start.java 用于初始化服务器和客户端。
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 中生成密码。
我已阅读所有此链接,但他们没有帮助我。
- https://github.com/gsurma/diffie_hellman_key_exchange
- https://gist.github.com/jmcd/b9a212df5dfa88b6d8dcb52c51b6be6b
- https://developer.apple.com/documentation/security/1643701-seckeycreatewithdata
- https://developer.apple.com/documentation/security/seckey
- https://developer.apple.com/documentation/security/secure_transport#//apple_ref/doc/uid/TP30000155
facebook - Bootloader/还在学习中,
我正在查看我的 Facebook 消息/通话记录,其中有我不知道的号码,所以我复制并粘贴它们以查找它们,并弹出确认这是我的问题,在我完成此代码后刚刚接管屏幕。我还想补充一下,我解锁了我的开发者选项,而且我还认为我的 FB、google 帐户是我的手机。这是第二次发生不确定是否相同的代码,我仍然有第一次。我一直在谷歌上搜索并询问其他人,我学到了很多东西,但该死的我仍然无法完全理解,只是零碎的,并且已经为此工作了 3 个月。我需要帮助,我放松了我的思想..有人可以帮忙吗?
这是一些代码
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# 密钥交换
encryption - 使用 Pycryptodome 进行混合加密的正确密钥交换过程
我正在编写一个使用 ZeroMQ 套接字和Pycryptodome创建安全通信通道的模块。
客户端和服务器之间的初始握手将遵循以下步骤:
- 双方将他们的公共RSA 密钥发送给对方。
- 服务器生成 AES 会话密钥和该密钥的签名。
- 服务器在将会话密钥和签名发送给客户端之前对其进行 RSA 加密。(*)
- 客户端验证签名并存储会话密钥。
- 客户端生成一个令牌,生成它的签名并将两个 AES 加密的文件发送到服务器。
- 服务器验证签名并回显令牌。
- 如果收到的令牌与发送的令牌匹配,则认为握手成功。
我在这个线程上发现,最好先对消息签名然后加密,而不是先加密然后签名。
问题是 2048 位 RSA 密钥的签名是 256 字节长。同一密钥的最大加密大小为 190 字节。这意味着我无法按照线程中的建议加密签名。
我应该使用 AES 会话密钥加密签名吗?我应该采取另一种方式吗?
我知道有“标准化”密钥交换协议(例如ECDH),但它们在 Pycryptodome 中尚不可用。
java - 如何将十六进制公钥转换为 ASN.1 SubjectPublicKeyInfo 结构以进行 Diffie-Hellman 密钥交换?
我正在尝试实现 Diffie-Hellman 密钥交换以使用 JAVA 加密包生成用于加密/解密的对称密钥。这需要双方之间的公钥交换。
客户端共享的公钥是 1024 位十六进制字符串,用于计算共享密钥。如何将此字符串转换为编码密钥格式(ASN.1 SubjectPublicKeyInfo 结构)以创建 PublicKey 对象。
考虑一个示例公钥字符串。参数p和g被输入到inputDHParameterSpec对象中。
示例实现:AutoGen 密钥对:
十六进制公钥 - 失败:
在第一个代码块中创建的 byte[] 具有 ASN.1 编码格式的公钥,但hexStringToByteArray(testPublicKey)只是将十六进制转换为 byte[]。因此,在标记线上出现以下错误。
有人可以帮助如何将此十六进制转换为所需的格式吗?还鼓励使用此十六进制字符串来获取密钥的不同实现。
ios - 我想在 openssl 中为 diffiehellman 更改 P 和 G 的值
由于参数生成可能是一个昂贵的过程,这通常提前完成一次,然后在许多密钥交换中使用相同的参数集。有没有办法在预先设置之前修改 p 和 g ?
java - 我试图将 EC 公钥从 android 导出到 iOS,最好的方法是什么?
我正在尝试在我的应用程序的 iOS 和 Android 客户端之间执行 EC 密钥交换。我已成功地将它们从 iOS 传输并生成到 Android。但我无法在 iOS 的 android 应用程序中使用生成的密钥。
我正在SecKeyCreateWithData
快速使用该方法从“数据”类型生成密钥,但出现此错误:
错误域=NSOSStatusErrorDomain 代码=-50“从数据创建 EC 公钥失败”
我在 android 客户端中使用了以下编码,它生成了一个 base64 字符串,我处理并SecKeyCreateWithData
在 swift 中作为数据传递
我想生成一个SecKeyRef公钥,请帮忙