base64字符串的RSA公钥

2024-05-15 04:45:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经编写了一个套接字服务器。服务器端是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库的Java8
  2. Python3及其加密库
  3. 加密算法RSA

如果您有一个更好的python库,我愿意接受建议,java是有点固定的,因为到目前为止,已经编写了很多代码


Tags: key字符串代码服务器clientbackend客户端string

热门问题