在移动客户端和服务器 PHP 之间使用 public/private 密钥加密
Encryption using public/private keys between mobile client and server PHP
案例1:Encrypted客户端到服务器的数据
需要在提供给 client.The 的 server.Public 密钥中创建一个 public/private 密钥 客户端使用 public 对其进行加密 key.The 服务器使用私钥对其进行解密已生成。
Case2:但是当服务器端的数据发送到
客户端。??
该数据也应该 encrypted.Does 与为案例 1 工作创建的 public/private 相同,或者应该生成新密钥?任何人都可以根据我的要求解释案例 2。
提前致谢。
可以任意方向使用public/私钥加密
所以你的客户端可以用public密钥加密,然后服务器可以用私钥解密。
如果您的服务器使用私钥加密,客户端可以使用 public 密钥解密。
如本 white paper on secure data encryption 及其支持 material 所述:
- 使用 HTTPS。
- 对于第二层经过身份验证的加密,请使用 libsodium(现代的跨平台加密库)和固定的 public 密钥。
PHP 例子
密钥生成
$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.
}
Android 示例(使用 Libstodium)
密钥生成
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:Encrypted客户端到服务器的数据
需要在提供给 client.The 的 server.Public 密钥中创建一个 public/private 密钥 客户端使用 public 对其进行加密 key.The 服务器使用私钥对其进行解密已生成。
Case2:但是当服务器端的数据发送到 客户端。??
该数据也应该 encrypted.Does 与为案例 1 工作创建的 public/private 相同,或者应该生成新密钥?任何人都可以根据我的要求解释案例 2。
提前致谢。
可以任意方向使用public/私钥加密
所以你的客户端可以用public密钥加密,然后服务器可以用私钥解密。 如果您的服务器使用私钥加密,客户端可以使用 public 密钥解密。
如本 white paper on secure data encryption 及其支持 material 所述:
- 使用 HTTPS。
- 对于第二层经过身份验证的加密,请使用 libsodium(现代的跨平台加密库)和固定的 public 密钥。
PHP 例子
密钥生成
$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.
}
Android 示例(使用 Libstodium)
密钥生成
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
);