案例1:从客户端到服务器的加密数据
需要在server.Public密钥中创建公钥/私钥。客户端使用公钥对其进行加密。服务器使用生成的私钥对其进行解密。
案例2:但是当服务器的数据发送到的时候呢 客户端。??
该数据也应该加密。是否应该生成为案例1工作或新密钥创建的相同公共/私有?有人可以根据我的要求解释case2。
提前致谢。
答案 0 :(得分:2)
如本white paper on secure data encryption及其支持材料中所述:
密钥生成
$bob_box_kp = \Sodium\crypto_box_keypair();
$bob_box_secretkey = \Sodium\crypto_box_secretkey($bob_box_kp);
$bob_box_publickey = \Sodium\crypto_box_publickey($bob_box_kp);
<强>加密强>
$anonymous_message_to_bob = \Sodium\crypto_box_seal(
$message,
$bob_box_publickey
);
<强>解密强>
$decrypted_message = \Sodium\crypto_box_seal_open(
$anonymous_message_to_bob,
$bob_box_kp
);
if ($decrypted_message === false) {
// You have the wrong keypair or the message was tampered with.
}
密钥生成
byte[] secret_key = new byte[Box.SECRETKEYBYTES];
byte[] public_key = new byte[Box.PUBLICKEYBYTES];
Box.keypair(public_key, secret_key);
<强>加密强>
Box.seal(
ciphertextByteArray, // Output goes here
plaintextByteArray, // Your message
public_key
);
<强>解密强>
Box.sealOpen(
plaintextOutputByteArray, // Decrypted data goes here
ciphertextByteArray, // Encrypted message received over the wire
public_key,
secret_key
);
答案 1 :(得分:0)
您可以在任何方向使用公钥/私钥加密。
因此您的客户端可以使用公钥加密,然后服务器可以使用私钥解密。 如果您的服务器使用私钥加密,则客户端可以使用公钥解密。