RSA base64字符串的公钥

问题描述

我写了一个套接字服务器。服务器端是Java,客户端端是Python。服务器使用TCP通信,并且由于TCP不安全,因此我使用非对称加密。该服务器具有私钥-公钥对,每次客户端连接时,它都会发送公钥并请求客户端公钥。

为了通过TCP发送PublicKey对象,我使用此函数将其转换为字符串。

public String publicKeyToString(PublicKey publicKey){
    byte[] pKBytes = publicKey.getEncoded();  // Get the public key to bytes

    return Base64.getEncoder().encodeToString(pKBytes);  // Convert the public key to String
}

另一方面,我使用此函数从字符串创建PublicKey对象

public PublicKey publicKeyFromString(String key) throws NoSuchAlgorithmException,InvalidKeySpecException {
    byte[] keyBytes = Base64.getDecoder().decode(key);

    KeyFactory kf = KeyFactory.getInstance("RSA");
    X509EncodedKeySpec spec = new X509EncodedKeySpec(keyBytes);
    return kf.generatePublic(spec);
}

以上代码在Java客户端上非常有效。现在我想在python中做同样的事情。我用这段代码创建私钥-

from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives.asymmetric import rsa

client_private_key = rsa.generate_private_key(
    public_exponent=65537,key_size=2048,backend=default_backend()
)

client_public_key = client_private_key.public_key()

现在的问题是,我不知道如何从公共密钥中提取字符串,因此我可以将其发送到服务器。另外,字符串密钥将从public String publicKeyToString(PublicKey publicKey)解码,因此应使用base64进行编码。

“规格”:

  1. 带有java.security库的Java 8
  2. 带有加密库的Python 3
  3. 加密算法RSA

如果您有一个更好的python库,我欢迎您提出建议,java在某种程度上是固定的,因为此时已编写了许多代码。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...