如何解决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进行编码。
“规格”:
- 带有java.security库的Java 8
- 带有加密库的Python 3
- 加密算法RSA
如果您有一个更好的python库,我欢迎您提出建议,java在某种程度上是固定的,因为此时已编写了许多代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。