【问题标题】:how to restore rsa public key? or change byte to rsa public key in python?如何恢复 rsa 公钥?或在python中将字节更改为rsa公钥?
【发布时间】:2019-05-03 07:14:55
【问题描述】:

我正在制作一个具有密钥交换算法的套接字程序。 该算法与 Web 浏览器和 Web 服务器之间的 SSL 密钥交换非常相似。 这些是该算法的步骤。

  1. 服务器与客户端建立套接字。
  2. 如果套接字已建立,服务器会生成 rsa 公钥、私钥,并将公钥发送给客户端。
  3. 客户端从服务器接收rsa公钥,同时生成rsa公钥、私钥,并将公钥发送给服务器。
  4. 服务器从服务器接收 rsa 公钥。
  5. 服务器生成AES密钥,类型为字符串。
  6. 服务器使用客户端的 rsa 公钥加密 AESkey。

在这一步,我有一个错误。

因为从客户端收到的密钥服务器的类型不是RSA公钥,而是字节数组。

如何将字节数组更改为 RSA 公钥?

或者还有其他方法可以恢复 RSA 公钥吗?像java中的关键工厂方法吗?

【问题讨论】:

  • 只是为了确保您知道:您的加密协议根本不安全。
  • @KlausD。对主动攻击者/中间人攻击是不安全的,因为公钥不能被信任,但对窃听者是安全的。所以它确实提供了一些安全性,尽管实际上说这不会有太大用处——无论如何都没有对公钥的额外保护。
  • @maarten-bodewes 不幸的是,您不能选择一种攻击向量并说如果您的协议不受它的影响它是安全的。它必须对所有已知的攻击媒介免疫才能安全。这相当棘手,实施需要该领域的经验。
  • 感谢您提醒我(查看我的个人资料):P 但我不知道他的攻击媒介,也不知道该协议是否有更多部分。我之所以发表评论是因为“根本不安全”可能夸大了它,并且因为它没有说明为什么协议不安全。如果我不能帮助自己,我也喜欢取笑:)

标签: python encryption rsa


【解决方案1】:

X509EncodedKeySpec 可用于KeyFactory"RSA" 实例。这需要一个字节数组,该数组被编码为 X.509 证书中的 SubjectPublicKeyInfo(因此得名)。

还有其他编码公钥的方法。最基本的编码之一是 PKCS#1 兼容的密钥格式。您可以看到如何处理这些类型的键 here,因为在 Java 中没有直接支持对这些键进行解码。

【讨论】:

    猜你喜欢
    • 2014-11-27
    • 1970-01-01
    • 2015-10-19
    • 2011-03-10
    • 2017-02-28
    • 1970-01-01
    • 2017-02-06
    • 2020-12-19
    • 2023-03-17
    相关资源
    最近更新 更多